当前位置:K88软件开发文章中心编程语言JavaScriptCoffeeScript → 文章内容

CoffeeScript 桥接模式

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-15 15:34:11

由 珍珍阿姨 创建,Carrie 最后一次修改 2016-08-12 桥接模式问题你需要为代码保持一个可靠的接口,可以经常变化或者在多种实现间转换。解决方案使用桥接模式作为不同的实现和剩余代码的中间体。假设你开发了一个浏览器的文本编辑器保存到云。然而,现在你需要通过独立客户端的端口将其在本地保存。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://localhostelse if root? new FileSaver filename, directory: './' # => Saved "Example data" to temp.txt in ./saver.save data讨论桥接模式可以帮助你将特定实现的代码置于看不见的地方,这样你就可以专注于你的程序中的具体代码。在上面的示例中,应用程序的其余部分可以称为saver.save data,不考虑文件的最终结束。

CoffeeScript 桥接模式