美文网首页jQuery源码笔记.jpg
JS设计模式——观察者模式

JS设计模式——观察者模式

作者: 柠檬果然酸 | 来源:发表于2020-04-15 22:42 被阅读0次

观察者(Observer)监听主题(Subject)状态,一旦主题发出某项指令,所有的观察者收到指令后就执行某个方法,大概是这么一回事。

主题

// 主题,接收状态变化,触发每个观察者
class Subject {
    constructor() {
        this.state = 0;
        this.observers = [];
    }
    getState() {
        return this.state;
    }
    setState(state) {
        this.state = state;
        this.notifyAllObservers();
    }
    attach(observer) {
        this.observers.push(observer);
    }
    notifyAllObservers() {
        this.observers.forEach(observer => {
            observer.update();
        });
    }
}

观察者

// 观察者,等待被触发
class Observer {
    constructor(name, subject) {
        this.name = name;
        this.subject = subject;
        this.subject.attach(this);
    }
    update() {
        console.log(`${this.name} update, state: ${this.subject.getState()}`)
    }
}

调用

let s = new Subject();
let o1 = new Observer('o1', s);
let o2 = new Observer('o2', s);
let o3 = new Observer('o3', s);

// 这里主题说话了啊
// 所有的观察者都给我干活啊
s.setState(1);
s.setState(2);
s.setState(3);

运行结果

> o1 update, state: 1
> o2 update, state: 1
> o3 update, state: 1

> o1 update, state: 2
> o2 update, state: 2
> o3 update, state: 2

> o1 update, state: 3
> o2 update, state: 3
> o3 update, state: 3

总的来说就是观察者有多个,主题只有一个,主题那里能触发所有观察者

相关文章

  • js的4种设计模式及Vue小结(1)

    4种js设计模式 模块模式(module) 原型模式(prototype) 观察者模式(observer) 单例模...

  • 观察者设计模式

    每周学点Java设计模式__观察者设计模式 本次继续更新java23中设计模式之一——观察者模式。 观察者模式(有...

  • 前端设计模式

    JS设计模式一:工厂模式jS设计模式二:单例模式JS设计模式三:模块模式JS设计模式四:代理模式JS设计模式五:职...

  • js代码题

    js对象的深度克隆 js数组去重 js常用设计模式的实现思路,单例,工厂,代理,装饰,观察者模式等

  • RxJava基础—观察者模式

    设计模式-观察者模式 观察者模式:观察者模式(有时又被称为发布(publish )-订阅(Subscribe)模式...

  • 设计模式02-观察者者设计模式

    [toc] 设计模式02-观察者者设计模式 主要来源Head First设计模式(书)观察者设计模式是JDK中使用...

  • 11.9设计模式-观察者模式-详解

    设计模式-观察者模式 观察者模式详解 观察者模式在android中的实际运用 1.观察者模式详解 2.观察者模式在...

  • 2021-11-18 - 学习记录

    观察者模式 - js

  • RxJava设计模式与原理

    标准观察者设计模式 RxJava是一种特殊的观察者模式,首先我们先来看标准的观察者设计模式。在标准观察者模式中,存...

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

网友评论

    本文标题:JS设计模式——观察者模式

    本文链接:https://www.haomeiwen.com/subject/jenrdhtx.html