js底层原理

js 观察者模式

2019-11-19  本文已影响0人  钢琴__

观察者模式定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知,并自动更新。观察者模式属于行为型模式,行为型模式关注的是对象之间的通讯,观察者模式就是观察者和被观察者之间的通讯。

观察者模式有一个别名叫“发布-订阅模式”,或者说是“订阅-发布模式”,订阅者和订阅目标是联系在一起的,当订阅目标发生改变时,逐个通知订阅者。我们可以用报纸期刊的订阅来形象的说明,当你订阅了一份报纸,每天都会有一份最新的报纸送到你手上,有多少人订阅报纸,报社就会发多少份报纸,报社和订报纸的客户就是上面文章开头所说的“一对多”的依赖关系。

代码实现

     # observable 被观察者类
     class Observable{

        observes = new Set();

        register(observer) {
            this.observes.add(observer)
        }

        subscribe() {
            [...this.observes].forEach(item => {
                item.subscribe();
            })
        }

        delete(item) {
            this.observes.delete(item);
        }
    }
    # 观察者类
    class Observer {
        name;

        constructor(name) {
            this.name = name;
        }

        subscribe() {
            console.log(`${this.name}在 ${Math.random()} 触发了`)
        }
    }
    const a = new Observable();

    const b = new Observer('uu');
    const c = new Observer('cc');
    const d = new Observer('dd');
    const e = new Observer('dd');
    
    a.register(b);
    a.register(d);
    a.register(c);
    a.register(e);

    a.subscribe();
    a.delete(b);
    a.subscribe();
上一篇下一篇

猜你喜欢

热点阅读