Skip to content

观察者设计模式

js
class Observer {
    constructor(fn) {
        this.fn = fn
    }
    
    update(...args) {
        this.fn(...args)
    }
}

class Subject {
    oberverList: []
    addObserver(observer) {
        this.oberverList.push(observer)
    }
    
    notify(...args) {
        this.oberverList.forEach((observer) =>{
            observer.update(...args)
        })
    }
}

// 测试
const ob1 = new Observer((...ags) => {
    console.log('监听者1', ...ags)
})
const ob2 = new Observer((value) => {
    console.log('监听者2', value)
})
const sub = new Subject()
sub.addObserver(ob1)
sub.addObserver(ob2)
sub.notify(1,2,3)