码迷,mamicode.com
首页 > 其他好文 > 详细

观察者模式

时间:2020-05-20 20:24:33      阅读:56      评论:0      收藏:0      [点我收藏+]

标签:构造   update   observer   console   hit   for   col   name   模式   

// 被观察者
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("燕窝细粉")

观察者模式

标签:构造   update   observer   console   hit   for   col   name   模式   

原文地址:https://www.cnblogs.com/carry-carry/p/12925759.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!