JavaScript设计模式与浏览器开发实践
1. 按键游戏示例:观察者模式实现
在这个示例中,我们将使用观察者模式实现按键游戏,与之前的中介者模式示例不同的是,本次我们允许无限数量的玩家参与游戏。
1.1 改造发布者对象
首先,我们对通用的发布者对象进行改造,使其接口更接近浏览器环境:
- 用 fire() 、 on() 和 remove() 替代 publish() 、 subscribe() 和 unsubscribe() 。
- 事件类型作为三个函数的第一个参数。
- 除了订阅者的函数外,还可以提供额外的上下文,以便回调方法使用 this 引用其自身对象。
改造后的发布者对象代码如下:
var publisher = {
subscribers: {
any: []
},
on: function (type, fn, context) {
type = type || 'any';
fn = typeof fn === "function" ? fn : context[fn];
if (typeof this.subscribers[type] === "undefined") {
this.subscribe
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



