C++怎么发布订阅和观察者模式
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,本篇内容主要讲解"C++怎么发布订阅和观察者模式",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++怎么发布订阅和观察者模式"吧!1、实现思路arr 做订
千家信息网最后更新 2025年12月01日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安全错误
数据库的锁怎样保障安全
导致服务器自动关机
什么是网络安全名言
jabber服务器管理
dlna服务器ipad
软考初级网络安全哪个好考
数据库切换用户的命令
融媒体网络技术
软件开发与程序员是一样吗
小米日历更新节假日数据库
应用服务器怎么查看使用多久了
日新月异的网络技术
玉溪版纳互联网科技
网络安全技术是什么级别
软件开发商会保存软件内容多久
美国国安网络安全理事会
我身边的网络安全事情
交行卡中心软件开发外包公司
川渝互联网科技公司
广州访客管理软件开发怎么样
无锡软件开发杨剑
松原IOS软件开发招聘
死亡空间3正版连不了ea服务器
浸血的黑暗低语宝典数据库
软件开发项目成本包括
银行网络安全与信息化
云服务器管理员的账号
steam怎么选服务器
网络安全标语海报
软件开发类国家二级
神州科技互联网有限公司