一文带你理解JavaScript观察者模式.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

一文带你理解JavaScript观察者模式

目录为什么需要观察者模式代码示例应用场景DOM事件监听:数据绑定自定义事件Promise对象Pub/Sub模式观察者模式(ObserverPattern)是一种行为型设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它的所有观察者都会收到通知并进行相应的处理。

观察者模式包含两个角色:

主题(Subject):被观察的对象,它维护了一个观察者列表,可以添加、删除观察者,以及通知观察者状态的变化。观察者(Observer):观察主题的对象,当主题状态发生变化时,它会接收到通知并进行相应的处理。

为什么需要观察者模式

观察者模式的价值在于它可以将主题对象和观察者对象解耦,使得它们可以独立地进行扩展和修改,同时也可以降低代码的耦合度,提高代码的可维护性和可扩展性。

具体来说,观察者模式有以下几个价值:

观察者模式可以在不修改主题对象和观察者对象的情况下,增加新的观察者对象或者新的主题对象,从而实现系统的扩展性。

观察者模式将主题对象和观察者对象解耦,使得它们可以独立地进行扩展和修改,降低了它们之间的依赖关系,提高了系统的灵活性。

观察者模式通过事件通知的方式,实现了主题对象和观察者对象之间的通信,使得它们可以相互交流和协作,从而实现系统的功能。

总之,观察者模式可以帮助我们更好地组织代码,降低代码的耦合度,提高代码的可维护性和可扩展性,应用广泛,是一种非常有价值的设计模式。

代码示例

下面是一个简单的观察者模式的代码示例:

//主题对象

classSubject{

constructor(){

this.observers=[];//观察者列表

//添加观察者

addObserver(observer){

this.observers.push(observer);

//删除观察者

removeObserver(observer){

constindex=this.observers.indexOf(observer);

if(index!==-1){

this.observers.splice(index,1);

//通知所有观察者状态的变化

notify(){

for(constobserverofthis.observers){

observer.update(this);

//更改状态,并通知所有观察者

setState(state){

this.state=state;

this.notify();

//观察者对象

classObserver{

//接收主题对象,并将自己添加到主题的观察者列表中

constructor(subject){

subject.addObserver(this);

//接收通知并进行相应的处理

update(){

console.log(Observerupdate:,this);

//创建主题和观察者对象

constsubject=newSubject();

constobserver1=newObserver(subject);

constobserver2=newObserver(subject);

//更改主题状态,并通知所有观察者

subject.setState(newstate);

这段代码中,我们首先定义了一个主题对象Subject,它维护了一个观察者列表observers,并提供了添加、删除观察者的方法,以及通知所有观察者状态变化的方法notify。在setState方法中,我们将状态赋值给state,并调用notify方法通知所有观察者。

然后定义了一个观察者对象Observer,它在构造函数中接收主题对象subject,并将自己添加到subject的观察者列表中。在update方法中,我们打印出观察者自身的信息。

最后创建了一个主题对象subject,以及两个观察者对象observer1和observer2。调用setState方法更改主题状态,并通知所有观察者。

应用场景

观察者模式的应用场景很多,以下是几个常见的场景及对应的代码示例:

DOM事件监听:

常见的如click事件、mouse事件、keyboard事件等,通过addEvent

文档评论(0)

158****0778 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档