didxga 发表于 2013-1-29 09:02:59

匿名事件 – 超低耦合

在我所见过的 Custom Event 例子中,总是会先有一个事件类型,然后会有订阅者订阅其感兴趣的不同事件,最后通过事件管理器发布事件。在这种事件模型里,必须首先存在一个事件类型。但是在有的情况下,我们想要订阅者能够订阅一个还不存在的事件类型。这个暂时还不存在的事件我们可以叫他匿名事件.

下面来看一段实现匿名事件的代码:
//事件管理器eventManager.events = {};//@sEvent: 事件类型,@sMethod:当事件发生时,要调用的订阅者的一个方法eventManager.subscribe = function(sEvent, oSubscriber, sMethod) {//如果该事件还不存在就创建一个这种类型事件的数组if (!eventManager.events) {    eventManager.events = [];}eventManager.events.push({subscriber: oSubscriber, method: sMethod});};eventManager.unsubscribe = function(sEvent, oSubscriber) {if (!eventManager.events) {    return;}for (var i=eventManager.events.length-1; i>=0; i--) {    if (eventManager.events.subscriber===oSubscriber) {      eventManager.events.splice(i,1);    }}};eventManager.fire = function(sEvent) {if (!eventManager.events) {    return;}for (var i=0; i<eventManager.events.length; i++) {    subscription = eventManager.events;    subscription.subscriber.apply(subscription.subscriber, arguments);}};
页: [1]
查看完整版本: 匿名事件 – 超低耦合