Loading...
墨滴

子田

2021/09/17  阅读:37  主题:默认主题

设计模式-观察者模式

背景

前段时间去面试360。 面试官:设计模式了解吗? 我:额嗯....这个,我会策略模式。 面试官:回去等通知吧。 很好,到今天我也没有等到通知。所以兄弟萌,搞搞设计模式吧,从观察者模式开始搞

啥是观察者模式

官方定义:观察者模式 在软件设计中是一个对象,维护一个依赖列表,当任何状态发生改变自动通知它们。(为数不多的人话,这个我看的懂

  1. 图解
  1. 代码
// 观察者模式  
// 观察者模式指的是一个对象(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("驴")//打印两次生产队的驴

钓鱼

妈耶,就这,很简单嘛。下期更新“观察者模式”的升级版本 “发布-订阅者模式

子田

2021/09/17  阅读:37  主题:默认主题

作者介绍

子田