Skip to content
On this page

观察者模式

观察模式是基于发布订阅模式 我们数据变化后可以自动通知触发发布 (vue 响应式原理)

javascript
class Subject { // 被观察者
    constructor{
        this._arr = []
        this.state = '很开心'
    }
    attach(o){
        this._arr.push(o) // 订阅
    }
    setSate(newState){
        this.state = newState
        // 宝宝状态变化了 会通知观察者更新 将自己传入过去
        this._arr.forEach(o=>o.update(this)) // 发布
    }
}

class Observer{ // 观察者
    constructor(name){
        this.name = name
    }
    update(s){
        console.log(this.name + ':' + s.name + s.state)
    }
}

let s = new Subject('宝宝') // 创建一个被观察者


let o1 = new Observer('爸爸')
let o2 = new Observer('妈妈')
s.attach(o1)
s.attach(o2)

s.setSate('有人打我了')

// 让 o1、o2绑定到 s 身上
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
沪ICP备20006251号-1