观察者模式也可以称为订阅模式,是一种从发布,到订阅,再到通知的过程。观察者模式有五个重要的模块,分别是:发布者、发布列表、增加订阅者、发布消息、订阅者收到订阅消息。
什么是观察者模式?
观察者模式就是定义了一个对象一对多的关系,让多个观察者同时监听一个大对象,当一个大对象发生变化时,所有的依赖它的对象都会得到通知。
比如:小明、小红、小赵报名参加了成人自考,等成绩公布的那天,报考学校会统一通过邮件方式通知所有考员成绩单,这个过程就是观察者模式。
// 发布通知
var pub = {
actions: function() {
dep.update();
}
}
// 小明
var sub1 = {
update: function() {
console.log(1);
}
}
// 小红
var sub2 = {
update: function() {
console.log(2);
}
}
// 小赵
var sub3 = {
update: function() {
console.log(3);
}
}
// 报考学校
function Dep(_usbs) {
this.update = function() {
for (var i = 0; i < _usbs.length; i++) {
_usbs[i].update();
}
}
}
// 准备通知要发送的名单
var dep = new Dep([sub1, sub2, sub3]);
// 执行统一发布通知
pub.actions();
执行的结果:
1
2
3