定义:

  在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会自动收到通知。

观察者模式和发布-订阅模式一样么?

  不一样!
  观察者模式会直接通知订阅者
  发布-订阅不会直接通知订阅者,而是通过第三个角色事件调度中心来实现通知订阅者

例子:

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
 function SellHome() {
this.userList = [];
}

SellHome.prototype.attach = function (msg) {
console.log('11', this);
this.userList.forEach(u => {
console.log('hh', u.name+''+msg);
});
};
SellHome.prototype.listen = function (user) {
console.log('22', this);
this.userList.push(user);
};

const u1 = {
name: '小明',
age: 20
};
const u2 = {
name: '小红',
age: 18
};

const s = new SellHome();
s.listen(u1);
s.listen(u2);

s.attach('吃饭啦');