背景
前段时间去面试360。 面试官:设计模式了解吗? 我:额嗯....这个,我会策略模式。 面试官:回去等通知吧。 很好,到今天我也没有等到通知。所以兄弟萌,搞搞设计模式吧,从观察者模式开始搞
啥是观察者模式
官方定义:观察者模式 在软件设计中是一个对象,维护一个依赖列表,当任何状态发生改变自动通知它们。(为数不多的人话,这个我看的懂)
- 图解
- 代码
// 观察者模式
// 观察者模式指的是一个对象(Subject)维持一系列依赖于它的对象(Observer),
//当有关状态发生变更时 Subject 对象则通知一系列 Observer 对象进行更新。、
// 定义一个Subject 发布者类
class Subject {
constructor() {
this.observers = [];
}
//添加订阅者
add(observer) {
this.observers.push(observer);
}
//通知
notify(params) {
this.observers.forEach(item => {
item.update(params)
})
}
//移除订阅者
remove(observer) {
let index = this.observers.indexOf(observer)
if (index >= 0) {
this.observers.splice(index, 1)
}
}
}
//定义一个 Observer 观察者类
class Observer {
constructor() {
}
//更新
update(params) {
console.log("生产队的" + params)
}
}
let xm = new Observer();
let xl = new Observer();
let sub = new Subject();
sub.add(xm);
sub.add(xl);
sub.notify("驴")//打印两次生产队的驴
钓鱼
妈耶,就这,很简单嘛。下期更新“观察者模式”的升级版本 “发布-订阅者模式”