Constructor(构造器)模式
1 | function Person(name, age) { |
- sleep()在所有Person对象间共享
Module(模块)模式
js中实现模块的方法
- 对象字面量
- Module模式
- AMD模块
- CommonJS模块
- ECMAScript Harmony模块
对象字面量
1 | let someObjectLiteral = { |
Module模式
1 | let someNamespace = (function () { |
Module模式变化
引入混入
1 | let someModule = (function (module1, module2...) { |
优缺点
- 优点
- 支持私有成员
- 缺点
- 私有成员无法测试
Revealing Module(揭示模块)模式
1 | let someRevealingModule = (function () { |
优缺点
- 优点
- 可读性高?
Singleton(单例)模式
1 | let someSingleton = (function () { |
Observer(观察者)模式
- Subject(目标): 维护一系列观察者,添加删除观察者
- Observer(观察者): 为那些在目标状态发生改变时需获取通知的对象提供更新接口
- ConcreteSubject(具体目标): 状态发生改变时,向Observer发出通知,储存ConcreteObserver的状态
- ConcreteObserver(具体观察者):