Javascript设计模式之观察者模式的多个实现版本实(4)


//回调函数
function handle(e, a, b, c) {
    // `e`是事件对象,不需要关注
    console.log(a + b + c);
};
 
//订阅
$.subscribe("/some/topic", handle);
//发布
$.publish("/some/topic", ["a", "b", "c"]); // 输出abc
       
 
$.unsubscribe("/some/topic", handle); // 退订
 
//订阅
$.subscribe("/some/topic", function (e, a, b, c) {
    console.log(a + b + c);
});
 
$.publish("/some/topic", ["a", "b", "c"]); // 输出abc
 
//退订(退订使用的是/some/topic名称,而不是回调函数哦,和版本一的例子不一样
$.unsubscribe("/some/topic");

可以看到,他的订阅和退订使用的是字符串名称,而不是回调函数名称,所以即便传入的是匿名函数,我们也是可以退订的。

总结

观察者的使用场合就是:当一个对象的改变需要同时改变其它对象,并且它不知道具体有多少对象需要改变的时候,就应该考虑使用观察者模式。

总的来说,观察者模式所做的工作就是在解耦,让耦合的双方都依赖于抽象,而不是依赖于具体。从而使得各自的变化都不会影响到另一边的变化。

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wgfdgy.html