##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层:用作中央事件管理器 事件委托