js 观察者模式

作者: 钢琴__ | 来源:发表于2019-11-19 15:26 被阅读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();
    

    相关文章

      网友评论

        本文标题:js 观察者模式

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