CoffeeScript 桥接模式

🌙
手机阅读
本文目录结构

桥接模式

问题

你需要为代码保持一个可靠的接口,可以经常变化或者在多种实现间转换。

解决方案

使用桥接模式作为不同的实现和剩余代码的中间体。

假设你开发了一个浏览器的文本编辑器保存到云。然而,现在你需要通过独立客户端的端口将其在本地保存。

  1. class TextSaver
  2. constructor: (@filename, @options) ->
  3. save: (data) ->
  4. class CloudSaver extends TextSaver
  5. constructor: (@filename, @options) ->
  6. super @filename, @options
  7. save: (data) ->
  8. # Assuming jQuery
  9. # Note the fat arrows
  10. $( =>
  11. $.post "#{@options.url}/#{@filename}", data, =>
  12. alert "Saved '#{data}' to #{@filename} at #{@options.url}."
  13. )
  14. class FileSaver extends TextSaver
  15. constructor: (@filename, @options) ->
  16. super @filename, @options
  17. @fs = require 'fs'
  18. save: (data) ->
  19. @fs.writeFile @filename, data, (err) => # Note the fat arrow
  20. if err? then console.log err
  21. else console.log "Saved '#{data}' to #{@filename} in #{@options.directory}."
  22. filename = "temp.txt"
  23. data = "Example data"
  24. saver = if window?
  25. new CloudSaver filename, url: 'http://localhost' # => Saved "Example data" to temp.txt at http://localhost
  26. else if root?
  27. new FileSaver filename, directory: './' # => Saved "Example data" to temp.txt in ./
  28. saver.save data

讨论

桥接模式可以帮助你将特定实现的代码置于看不见的地方,这样你就可以专注于你的程序中的具体代码。在上面的示例中,应用程序的其余部分可以称为 saver.save data,不考虑文件的最终结束。

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了