zoukankan      html  css  js  c++  java
  • 观察者模式

    //被观察者
    class Subject {
      constructor(name) {
          this.name = name;
          this.observers = [];
          this.status = 'happy';
      }
      //被观察者提供一个方法 接受观察者
      attach(observer) {
        this.observers.push(observer);
      }
      setStatus(newStatus) {
           this.status = newStatus;
           this.observers.forEach(o=>o.update(newStatus));
      }
    }
    //观察者
    class Observer {
        constructor(name){
            this.name = name;
        }
        update(newStatus){ // 用来通知所有的观察者状态更新了
            console.log(this.name+'说:孩子'+newStatus);
        }
    }
    let sub = new Subject('孩子');
    let o1 =new Observer('父亲');
    let o2 =new Observer('母亲');
    let o3 =new Observer('爷爷');
    let o4 =new Observer('奶奶');
    sub.attach(o1);
    sub.attach(o2);
    sub.setStatus('bad')

    输出:

    父亲说:孩子bad
    母亲说:孩子bad
     
    先声明两个类 观察者类 和 被观察者类 
     

    新建构造函数   初始化 数据  观察者要提供一个数组 存放被观察者  

     

     在观察者中 声明 两个 方法 

    attach  方法是将   观察者push  到数组中

    seTStatus 方法 是修改 状态 更新状态

     观察者方法

    通知状态更新

  • 相关阅读:
    C#中关于zip压缩解压帮助类的封装(转)
    MonoTouch的官网
    Android布局
    VS2010网站发布
    HTML5的PLACEHOLDER属性
    some np problem
    srm 578
    opencv 边缘算子
    Python扩展(pybind11混编)
    PyTorch之初级使用
  • 原文地址:https://www.cnblogs.com/guangzhou11/p/11318473.html
Copyright © 2011-2022 走看看