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

    // 被观察者
    class Subject{   // 定义一个对象
        constructor(){  // 构造器---可以实例一个对象
            this.subs = []  // 存储观察者
        }
        addsub(sub){  // 添加观察者
            this.subs.push(sub)
        }
        notify(food){   // 通知观察者
            this.subs.forEach(sub=>{ /// 遍历所有的观察者并且调用update
               sub.update(food)  // 通知观察者来取餐
            })
        }
    }
    
    // 观察者---订餐的人
    class Observer{
        constructor(name,food){
          this.name = name;
          this.food = food;
        }
        update(food){
          if(food === this.food){
              console.log(this.name + "点的餐:"+food)
          }
        }
    }
    
    var sub = new Subject()  // new一个对象会自动调用构造器
    var tom = new Observer('张三','鱼香肉丝')
    var jack = new Observer('李四','燕窝细粉')
    // 将观察者添加到观察列表
    sub.addsub(tom)
    sub.addsub(jack)
    // 通知观察者来取餐
    sub.notify("鱼香肉丝")
    sub.notify("燕窝细粉")
    // 被观察者
    class Subject{   // 定义一个对象
        constructor(){  // 构造器---可以实例一个对象
            this.subs = []  // 存储观察者
        }
        addsub(sub){  // 添加观察者
            this.subs.push(sub)
        }
        notify(food){   // 通知观察者
            this.subs.forEach(sub=>/// 遍历所有的观察者并且调用update
               sub.update(food)  // 通知观察者来取餐
            })
        }
    }

    // 观察者---订餐的人
    class Observer{
        constructor(name,food){
          this.name = name;
          this.food = food;
        }
        update(food){
          if(food === this.food){
              console.log(this.name + "点的餐:"+food)
          }
        }
    }

    var sub = new Subject()  // new一个对象会自动调用构造器
    var tom = new Observer('张三','鱼香肉丝')
    var jack = new Observer('李四','燕窝细粉')
    // 将观察者添加到观察列表
    sub.addsub(tom)
    sub.addsub(jack)
    // 通知观察者来取餐
    sub.notify("鱼香肉丝")
    sub.notify("燕窝细粉")
  • 相关阅读:
    水晶报表基础操作技巧收藏
    注册表里相应的
    .Net 中的反射(动态创建类型实例) Part.4动态创建对象
    .Net 中的反射(查看基本类型信息) Part.2
    Javascript多级菜单
    诡异的中毒现象
    js魔力代码
    Silverlight入门教程
    Silverlight 2.0中文学习资源集萃
    jatoolsPrinter 2手册
  • 原文地址:https://www.cnblogs.com/carry-carry/p/12925759.html
Copyright © 2011-2022 走看看