我是一名初级前端开发者,目前精力着眼于 Plain JavaScript 上,我的博客 if-true.com,原文链接:《JavaScript 设计模式与开发指南》笔记(二)。欢迎交流 :)
本书笔记分为三个部分,也是按照全书目录三个部分划分的,当前是第二部分设计模式,另外两部分分别是:《JavaScript 设计模式与开发指南》笔记(一)、《JavaScript 设计模式与开发指南》笔记(三)
第二部分 设计模式
第4章 单例模式
-
单例模式定义
保证一个类仅有一个实例,并提供一个访问它的全局访问点。标准的单例模式无非是用一个变量标记当前是否已经为某个类创建过对象。
-
代理模式
-
惰性单例模式
在合适的时候才创建对象,并且只创建唯一的一个。
-
降低全局变量带来的命名污染方法
- 使用命名空间
- 使用闭包封装私有变量
第5章 策略模式
- 策略模式的定义是:定义一系列的算法,把它们一个个封装起来,并且它们是可以相互替换。
- 策略模式的目的是将算法的使用与算法的实现分离开来。
- 通过使用策略模式重构代码,消除了原程序中大片的条件分支语句。
- 三个例子:计算奖金、缓动动画、表单验证。
第6章 代理模式
-
保护代理和虚拟代理
-
虚拟代理实现图片预加载
-
虚拟代理合并 HTTP 请求
-
虚拟代理在惰性加载中的应用
-
缓存代理
-
其他代理模式
- 防火墙代理
- 远程代理
- 保护代理
- 智能引用代理
- 写时复制代理
-
JavaScript 开发中最常见的是虚拟代理和缓存代理。
第7章 迭代器模式
第8章 发布-订阅模式
- 优点:一为时间上的解耦,二为对象之间的解耦。
第9章 命令模式
(needToReview)
第10章 组合模式
-
深度遍历树
-
组合模式可以方便地构造一棵树来表述对象的部分-整体结构
第11章 模板方法模式
- 在模板方法模式中,子类实现中的相同部分被上移到父类中,而不同的部分留在子类来实现。
第12章 享元模式
- 享元的核心是运用共享技术来有效支持大量细粒度的对象
- 如何划分内部状态和外部状态(P167)
- 享元模式是一种用时间换空间的优化模式
- 当对象没有内部状态的时候,生产共享对象的工厂实际上变成了一个单例工厂。
- 对象池是另外一种性能优化方案,跟享元模式有一些相似之处,但没有分离内部状态和外部状态的过程。
第13章 职责链模式
- 销售手机例子
第14章 中介者模式
-
面向对象设计鼓励将行为分布到各个对象中,把对象划分成更小的粒度,有助于增强对象的可复用性,但由于这些细粒度对象之间的关系激增,又有可能反过来降低它们的可复用性。中介者模式的作用就是解除对象与对象之间的紧耦合关系。
-
中介者模式是迎合迪米特法则的一种实现。迪米特法则也叫最少知识原则,是指一个对象影噶尽可能少地了解另外的对象。
第15章 装饰者模式
- 几个例子
- 装饰者模式与代理模式区别
第16章 状态模式
- 通常谈到封装,一般都会优先封装对象的行为,而不是对象的状态。但在状态模式中刚好相反,状态模式的关键是把事物的每种状态都封装成单独的类。
- 状态模式和策略模式
网友评论