观察者模式: 又被称发布-订阅者模式或消息机制, 定义了一种依赖关系, 解决了主体对象与观察者之间功能的耦合.
观察者模式可以解决模块间通信, 给模块间解耦.
实现一个简单的观察者
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| var observer = (function () { var __messages = {} return { regist: function (type, fn) { if (typeof __messages[type] === 'undefined') { __messages[type] = [fn] } else { __messages[type].push(fn) } return this }, fire: function (type) { if (!__messages[type]) { return } let args = [...arguments].splice(1) for (var i = 0, len = __messages[type].length; i < len; i++) { __messages[type][i].call(this, ...args) } }, remove: function () { if (__messages[type] instanceof Array) { var i = __messages[type].length - 1 for (; i >= 0; i--) { __messages[type][i] === fn && __messages[type].splice(i, 1) } } }, } })()
|
测试
1 2 3 4 5
| observer.regist('test', function (name, age) { console.log(name, age) }) observer.fire('test', 'cl', 29) observer.fire('test', 'lc', 20)
|