观察者模式(1)

观察者模式是什么

观察者模式(Observer),定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。

也可以叫发布-订阅模式(Publish/Subscribe)但是注意不尽然,这两个还是有一定区别的

两者最大的区别在于发布定于模式,多了个调度中心;
观察者模式中观察者和目标直接进行交互,而发布订阅模式中统一由调度中心进行处理,订阅者和发布者互不干扰,可以进行更多细致化的操作控制。
image

实现

  1. 观察者模式 分为目标主体和多个观察者(一对多的关系)
  2. 目标主体 内有主要是收集观察者和 发送通知
  3. 观察者 每次创建时 往目标主体里面添加,和等待消息通知

----上代码-----

//目标主体
  class Sub{
    constructor(){
      this.obList=[]  //收集器
    }
    addOb(obSever){ //添加观察者
      this.obList.push(obSever)
    }
    // 通知每个观察者 并携带信息
    notify(dataInfo){
      this.obList.forEach(observer =>{
          observer.upData(dataInfo)
      })
    }
  }
//观察者
  class obServer{
    constructor(name){
      this.name=name
    }
    upData(data){
      console.log(`观察者${this.name}接收到${data}`);
    }
  }

  let sub= new Sub()
  let ob1=new obServer('张三')
  let ob2=new obServer('李四')

  sub.addOb(ob1)  //添加观察者
  sub.addOb(ob2)  //添加观察者

  sub.notify('看见了日全食')  //发布消息实现群体通知

image

上面简单实现一个观察者模式 在目标主体实现对象的解耦,不用在手动去调用观察者的接收更新;
下篇给大家带来 观察者模式 的一些简单示例应用

posted @ 2022-07-12 14:17  xiao旭  阅读(68)  评论(0编辑  收藏  举报