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 方法 是修改 状态 更新状态

     观察者方法

    通知状态更新

  • 相关阅读:
    弹飞绵羊
    POJ 3308
    狼抓兔子
    块状链表题*1
    块状链表
    双向链表
    Linux入职基础-1.2_U盘安装RedHat5具体步骤
    Linux入职基础-1.1_国内开源的主要镜像站
    VS.NET(C#)--2.9_HTML服务器控件案例
    VS2015按钮方法
  • 原文地址:https://www.cnblogs.com/guangzhou11/p/11318473.html
Copyright © 2011-2022 走看看