Skip to content

Instantly share code, notes, and snippets.

@zD98
Created March 23, 2016 01:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zD98/1a21d6255b84f69ebaa0 to your computer and use it in GitHub Desktop.
Save zD98/1a21d6255b84f69ebaa0 to your computer and use it in GitHub Desktop.
设计模式-享元模式

##Flyweight模式

###总结 用于优化重复, 缓慢及数据共享效率较低的代码, 通过与相关对象共享尽可能多的数据来减少应用程序中的内存使用 理解:将公用的数据抽象出来作为内层数据, 外层数据是对内层数据的一种处理与引用

###例子 //Book是享元的内层 var Book = function(...){} var BookFactory = (function(){ var existingBooks = {}; return { //如果book存在返回book单一实例,不存在则创造 createBook:createBook } })(); //享元外层 var BookRecordDatabase = (function(){ //将书籍的借阅等管理信息封装在外层 var bookRecordDatabase = {}; return { addBookRecord:function(id,...){ var book = bookFacrtory.createBook(id...) bookRecordDatabase[id] = { book:book, ... } } } })()

###分析 1. 用于数据:处理内存中保存的的大量相似对象共享数据 将大量相似对象共享的数据抽象出来,作为内层数据 2. 用于DOM层:用作中央事件管理器 事件委托

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment