W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
你需要為代碼保持一個(gè)可靠的接口,可以經(jīng)常變化或者在多種實(shí)現(xiàn)間轉(zhuǎn)換。
使用橋接模式作為不同的實(shí)現(xiàn)和剩余代碼的中間體。
假設(shè)你開發(fā)了一個(gè)瀏覽器的文本編輯器保存到云。然而,現(xiàn)在你需要通過獨(dú)立客戶端的端口將其在本地保存。
class TextSaver
constructor: (@filename, @options) ->
save: (data) ->
class CloudSaver extends TextSaver
constructor: (@filename, @options) ->
super @filename, @options
save: (data) ->
# Assuming jQuery
# Note the fat arrows
$( =>
$.post "#{@options.url}/#{@filename}", data, =>
alert "Saved '#{data}' to #{@filename} at #{@options.url}."
)
class FileSaver extends TextSaver
constructor: (@filename, @options) ->
super @filename, @options
@fs = require 'fs'
save: (data) ->
@fs.writeFile @filename, data, (err) => # Note the fat arrow
if err? then console.log err
else console.log "Saved '#{data}' to #{@filename} in #{@options.directory}."
filename = "temp.txt"
data = "Example data"
saver = if window?
new CloudSaver filename, url: 'http://localhost' # => Saved "Example data" to temp.txt at http://localhost
else if root?
new FileSaver filename, directory: './' # => Saved "Example data" to temp.txt in ./
saver.save data
橋接模式可以幫助你將特定實(shí)現(xiàn)的代碼置于看不見的地方,這樣你就可以專注于你的程序中的具體代碼。在上面的示例中,應(yīng)用程序的其余部分可以稱為saver.save data,不考慮文件的最終結(jié)束。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: