设计模式 - 观察者模式
Posted web半晨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式 - 观察者模式相关的知识,希望对你有一定的参考价值。
// 有一家猎人工会,
// 其中每个猎人都具有发布任务 (publish) ,
// 订阅任务 (subscribe) 的功能
// 他们都有一个订阅列表来记录谁订阅了自己
// 定义一个猎人类
// 包括姓名,级别,订阅列表
function Hunter(name, level) {
this.name = name;
this.level = level;
this.list = [];
};
// 在 Hunter 原型上添加 publish 方法
Hunter.prototype.publish = function(money) {
console.log(this.level + '猎人' + this.name + '寻求帮助');
this.list.forEach(function(item, index) {
item(money);
});
};
// 在 Hunter 原型上添加 subscribe 方法
Hunter.prototype.subscribe = function(targrt, fn) {
console.log(this.level + '猎人' + this.name + '订阅了' + targrt.name);
targrt.list.push(fn);
};
// 猎人工会走来了几个猎人
let hunterMing = new Hunter('小明', '黄金');
let hunterJin = new Hunter('小金', '白银');
let hunterZhang = new Hunter('小张', '黄金');
let hunterPeter = new Hunter(' Peter ', '青铜');
// Peter 等级较低,
// 可能需要帮助,
// 所以小明,小金,小张都订阅了 Peter
hunterMing.subscribe(hunterPeter, function(money) {
console.log('小明表示:' + (money > 200 ? '' : '暂时很忙,不能给予帮助'));
});
hunterJin.subscribe(hunterPeter, function() {
console.log('小金表示:给予帮助');
});
hunterZhang.subscribe(hunterPeter, function() {
console.log('小金表示:给予帮助');
});
// Peter 遇到困难,赏金 198 寻求帮助
hunterPeter.publish(198);
以上是关于设计模式 - 观察者模式的主要内容,如果未能解决你的问题,请参考以下文章
Java设计模式补充:回调模式事件监听器模式观察者模式(转)