观察者模式(发布订阅模式)
什么是观察者模式?它分为注册环节跟发布环节。
比如我去买芝士蛋糕,但是店家还没有做出来。这时候我又不想在店外面傻傻等,我就需要隔一段时间来回来问问蛋糕做好没,对于我来说是很麻烦的事情,说不定我就懒得买了。
店家肯定想要做生意,不想流失我这个吃货客户。于是,在蛋糕没有做好的这段时间,有客户来,他们就让客户把自己的电话留下,这就是观察者模式中的注册环节。然后蛋糕做好之后,一次性通知所有记录了的客户,这就是观察者的发布环节。
这里来简单实现一个观察者模式的类
function Observer() {
this.dep = [];
this.register = function (fn) {
this.dep.push(fn);
};
this.notify = function () {
this.dep.forEach(item => item());
};
}
const wantCake = new Observer();
// 每来一个顾客就注册一个想执行的函数
wantCake.register(() => {
console.log("call daisy");
});
wantCake.register(() => {
console.log("call anny");
});
wantCake.register(() => {
console.log("call sunny");
});
// 最后蛋糕做好之后,通知所有的客户
wantCake.notify();
网友评论