
1、observer [观察者模式]
1234567891011121314
|
class StateTracker{ constructor(){ this.observers = []; this.internalState= 10; } // 改变内部状态,触发状态的观察者列表 change(val){ this.internalState= val; this.observers.forEach(observer=>observer(val)); }// 注册观察者 registerObserver(ObserverFn){ this.obserers.push(ObserverFn) }}
|
2、publish/subscribe [订阅发布模式]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
class PubSubHandler{ constructor(){ this.eventPool = {}; } //移除 off(topicName){ delete this.observers[topicName] } //发布 trigger(topicName,...args){ this.eventPool[topicName] && this.eventPool[topicName].forEach(callback=>callback(...args)); } //订阅 on(topicName,callback){ let topic = this.eventPool[topicName] ; if(!topic){ this.eventPool[topicName] =[] } this.eventPool[topicName].push(callback) } }
|
3、singleton[单例模式]
构造函数的实例只有一个,一般是通过闭包存储内部实例,通过接口访问内部实例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
var single = () => { var instance; var createInstance = () => { this.a = 1; this.b = 2; } return { getInstance:() => { if(!instance) { instance = createInstance(); } return instance; } } }
|
近期评论