C++怎么发布订阅和观察者模式
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容主要讲解"C++怎么发布订阅和观察者模式",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++怎么发布订阅和观察者模式"吧!1、实现思路arr 做订
千家信息网最后更新 2026年10月31日C++怎么发布订阅和观察者模式
本篇内容主要讲解"C++怎么发布订阅和观察者模式",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++怎么发布订阅和观察者模式"吧!
1、实现思路
arr 做订阅了的事件的缓存中心
通过过on把需要做的事push arr 缓存数组中
等待事件触发时 依次emit执行事件
2、代码实现
interface eventHub { arr: Array; on(fn: Function): void; emit(): void;}interface Person { age: number; name: string;}let eventHub: eventHub = { arr: [] as Array, // 订阅 on(fn: Function) { this.arr.push(fn); }, // 发布 emit() { this.arr.forEach((fn) => fn()); },};let person: Person = {} as Person;eventHub.on(() => {//订阅的事件里判断当 person长度为2时 打印person, if (Object.keys(person).length == 2) { console.log(person); }});setTimeout(function () { person.age = 27; //发布的时候去遍历 this.arr 并执行第一次 eventHub.emit();}, 10);setTimeout(function () { person.name = "Zoe"; //发布的时候去遍历 this.arr 并执行第二次 eventHub.emit();}, 20); 3、结果
虽然发布了两次 但最终on 里的console因为外部条件只执行了一次
观察者模式
1、实现思路
与观察者模式类似,但需要分一个观察者,和被观察者
观察者和被观察者存在关联,(内部基于发布订阅模式)
2、代码实现
// 被观察者class Subject { name: string; //实例上定义一个name属性 state: string; observers: any[]; constructor(name:string) { this.name = name; this.observers = []; this.state = ""; } attach(o) { //传入观察者 this.observers.push(o); } setState(newState) { this.state = newState; this.observers.forEach((o) => o.update(this)); }}// 观察者class Observer { name: string; constructor(name) { this.name = name; } update(interviewee) { console.log(`${interviewee.name} say to: ${this.name} ZOE的${interviewee.state}`); }}let hr = new Subject("HR");let observer1 = new Observer("内推者");let observer2 = new Observer("面试者");hr.attach(observer1);hr.attach(observer2);hr.setState("面试通过了");// baby.setState("面试没通过");3、实现结果
两者的区别
eventHub 发布订阅
on(订阅)和发布(emit)之间没有直接联系,是依赖中间的arr 做衔接 订阅一个push 到arr一个,emit的时候依次执行arr
观察者模式
观察者和被观察者存在关联,(内部基于发布订阅模式)
将观察者的实例作参数 传入被观察者的attach方法中 并缓存在observers 数组中
当观察者setState时候 依次调用缓存数组observers 中观察者的update方法
到此,相信大家对"C++怎么发布订阅和观察者模式"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
观察者
观察
订阅
模式
事件
时候
缓存
C++
数组
方法
代码
内容
实例
思路
结果
关联
学习
实用
更深
之间
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
咖啡豆
伟宏互联网科技
互联网科技保险
互联网中国科技
成都互联网科技公司
云电互联网科技
狮子座互联网科技有限公司
互联网 视角下的科技创新
互联网 科技服务平台
玖二柒互联网科技公司待遇
重庆威客帮互联网科技
茂名市互联网科技产业园
知域互联网科技有限公司大骗子
美国互联网科技实力
互联网公司高科技产品
互联网科技手抄报图片
张家口科技产业互联网平台
同城互联网络科技
北京天晋互联网科技有限公司
现代互联网科技公司
中国互联网科技股
互联网金融科技平台
上海致骋互联网科技
亿账通互联网科技
郑州华宇互联网科技
一五八零互联网科技
互联网科技公司需要的职位
注册互联网科技公司经营范围大全
云南互联网科技学费
求路客互联网科技电话