javascript设计模式---观察者模式

Posted 哈娄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript设计模式---观察者模式相关的知识,希望对你有一定的参考价值。

观察者模式

  • 观察对象状态,一旦对象发生变化,观察者定义的动作行为被触发(需要一个观察者角色,需要一个被观察者角色。 --------------主动权在被观察者手中)

大体思路:

  1. 观察者进行定义方法
  2. 被观察者改变状态,触发观察者的方法 

观察者:

class Observer {
    constructor(name, fn=() => {}) {
        this.name=name
        this.fn = fn
    }
}

const bzr = new Observer('班主任', (state) => {console.log(`因为${state}找你家长`)})

被观察者

class Subject {
    constructor(state) {
        this.state = state
        this.observers = []
    }
    setState(state) {
        this.state = state
        this.observers.forEach(item => {
            item.fn(state)
        })
    }
    addObservers(obs) {
        this.observers.filter(item => item!== obs);
        this.observers.push(obs)
    }
    delObservers(obs) {
         this.observers.filter(item => item!== obs);
    }
}

const xiaoming = new Subject('学习')
xiaoming.addObservers(bzr)

xiaoming.setState('玩') //触发观察者的监听函数,打印出 因为玩找你家长

 

以上是关于javascript设计模式---观察者模式的主要内容,如果未能解决你的问题,请参考以下文章

JAVA SCRIPT设计模式--行为型--设计模式之Observer观察者模式(19)

JAVA SCRIPT设计模式--行为型--设计模式之Observer观察者模式(19)

JAVASCRIPT与PHP观察者模式

javascript设计模式

javascript 【设计模式】观察者模式

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