class Subject {
constructor(name) {
this.name = name
this.observers = []
this.state = ''
}
subscribe(observer){
this.observers.push(observer)
}
unsubscribe(observer){
this.observers = this.observers.filter(item => {
return item !== observer
})
}
setState(newState){
this.state = newState
this.observers.forEach(item => {
item.update(newState)
})
}
}
class Observer {
constructor(name){
this.name = name
}
update(newState) {
console.log(this.name + '接收到了' + newState)
}
}
let sub = new Subject('发布主题')
let a = new Observer('用户A')
let b = new Observer('用户B')
sub.subscribe(a)
sub.subscribe(b)
sub.setState('新发布内容')
- 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
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45