当前位置:网站首页>观察者模式
观察者模式
2022-06-24 09:32:00 【Time202051】
// 主题 报社
class Subject {
constructor(name) {
this.name = name
this.news = "" //报社发布的内容,将会发布给所有已订阅报纸的用户
this.observers = [] //用户数组
}
add(observer) {
this.observers.push(observer)
}
getState() {
return this.news
}
setState(news) {
this.news = news
// 出版新报纸,立刻发布给所有用户
this.notify()
}
notify() {
this.observers.forEach(item => {
item.update(this) //触发所有订阅用户的update
console.log('---------------');
})
}
}
// 观察者 用户 已知/未知用户们
class Observer {
constructor(name, subject) {
this.name = name //用户名
this.subject = subject
this.subject.add(this) //用户将自己信息给报社(报社才知道谁是订阅用户)
}
update(e) {
console.log(this.subject.name+" 送报员给 " + this.name + " 送了份报纸内容是: " + this.subject.getState());
}
}
// 一对多 一家报社对应多个用户
let bs = new Subject('新华社')
let lts = new Subject("路透社")
let zs = new Observer('法外狂徒张三', bs)
let ls = new Observer("李四", bs) //李四也订阅了报社
let ww = new Observer("王五", bs) //王五也订阅了报社
let zl = new Observer("赵六",lts)
let mq = new Observer("马七",lts)
// 报社发布报纸
let new1 = bs.setState("大家好我是报社,谢谢大家订阅我们报社")
let new2 = bs.setState("报社第一期内容")
let ltsNew1 = lts.setState("这里是路透社最新报道")
console.log(new1);
console.log(new2);
console.log(ltsNew1);
边栏推荐
- Baidu AI template for knowledge understanding
- threejs的 mmd模型加载+轮廓加载+动画加载+音频加载+相机动画加载+ammojs加载 gltf模型的加载 +gltf的反射调整
- An open source monitoring data collector that can monitor everything
- Conseils étonnants pour promouvoir les ventes d'entreprise avec le chat en direct
- 算法---矩阵中战斗力最弱的 K 行(Kotlin)
- Niuke network decimal integer to hexadecimal string
- Learn Tai Chi Maker - esp8226 (12) esp8266 multitasking
- Handling method of Oracle data file header SCN inconsistency
- PhpStrom代码格式化设置
- Turn to: CEO of Samsung Electronics: all decisions should start from recognizing yourself
猜你喜欢

R ellipse random point generation and drawing

英伟达这篇CVPR 2022 Oral火了!2D图像秒变逼真3D物体!虚拟爵士乐队来了!

Five heart matchmaker

Ora-28000 error after upgrading Oracle 12C to 19C

Learn Tai Chi Maker - esp8226 (12) esp8266 multitasking

从618看京东即时零售的野心

顶刊TPAMI 2022!基于不同数据模态的行为识别:最新综述

Conseils étonnants pour promouvoir les ventes d'entreprise avec le chat en direct

Servlet fast foundation building

vim的使用
随机推荐
Latex formula and table recognition
Analysis of 43 cases of MATLAB neural network: Chapter 32 time series prediction of wavelet neural network - short-term traffic flow prediction
Turn to: CEO of Samsung Electronics: all decisions should start from recognizing yourself
SQL-统计连续N天登陆的用户
获取带参数的微信小程序二维码-以及修改二维码LOGO源码分享
nVisual数字基础设施运营管理软件平台
php文件锁
英伟达这篇CVPR 2022 Oral火了!2D图像秒变逼真3D物体!虚拟爵士乐队来了!
P6117-[joi 2019 final] greedy
LeetCode: 137. Number II that appears only once
Oracle数据库EXPDP只导出表的方法
NLP-D59-nlp比赛D28—我想,也好—阶段总结—心态调整
IDEA 无法保存设置 源根 D:XXXX在模块XXX中重复
L01_ How is an SQL query executed?
R 椭圆随机点产生并画图
LeetCode: 240. Search 2D matrix II
Codeforces Round #392 (Div. 2) D. Ability To Convert
Niuke network decimal integer to hexadecimal string
Oracle查看数据文件头SCN信息
Thinkphp5清除runtime下的cache缓存,temp缓存,log缓存