设计模式之观察者模式
创始人
2024-05-26 07:28:29

文章の目录

  • 一、定义
  • 二、使用场景
  • 三、示例
  • 参考
  • 写在最后


一、定义

观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象(通知者)。这个主题对象观察到被观察者发生变化时,会通知所有的观察者对象,使它们能够自己更新自己。

这里涉及了几个角色及他们自己功能:

  • 观察者对象:可以更新自己
  • 主题对象:可以添加观察者,移除观察者,通知观察者
  • 被观察者:被主题对象监视,当被观察者发生变化时,主题对象会通知观察者更新自己的状态

二、使用场景

当一个对象改变需要同时改变其他对象的时候,而且不需要知道有多少个对象需要改变

三、示例

class Event {constructor() {// 保存事件this.handles = {};}// 添加事件,监听 、观察addEvent(eventName, fn) {// {'myevent':[fn1,fn2....],'myevent2':[fn1,fn2..]}if (typeof this.handles[eventName] === "undefined") {this.handles[eventName] = [];}this.handles[eventName].push(fn);}// 触发trigger(eventName) {this.handles[eventName].forEach(v => {v();});}// 移除事件removeEvent (eventName,fn);
}
let obj1 = {fn() {console.log("fn111");}
};
let obj2 = {fn() {console.log("fn222");}
};
let myevent = new Event();
// 添加事件(没有执行)
myevent.addEvent("myevent", obj1.fn);
myevent.addEvent("myevent", obj2.fn);
// myevent.removeEvent("myevent",obj2.fn);  //移除obj2.fn
setTimeout(() => {myevent.trigger("myevent");
}, 1000);

参考

  1. js观察者模式的介绍及使用

写在最后

如果你感觉文章不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果你觉得该文章有一点点用处,可以给作者点个赞;\\*^o^*//
如果你想要和作者一起进步,可以微信扫描二维码,关注前端老L~~~///(^v^)\\\~~~
谢谢各位读者们啦(^_^)∠※!!!

相关内容

热门资讯

demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...