当前位置: 首页 > news >正文

设计模式 观察者模式

目录

1. 定义

2. 应用场景


1. 定义

对象间的一种一对多的依赖关系, 以便当一个对象的状态发生改变时, 所有依赖他的对象都得到通知并自动更新.

2. 应用场景

"一" 对 "多" 的依赖关系, "一" 变化 "多" 跟着变化.

现在有这样的一个场景: 我们有一个 数据中心 和 多个显示设备 场景.

代码结构:

观察接口

多个观察者类 继承自 观察接口

客户类通过 容器 组合 所有的观察者类(基类指针)

class IDisplay
{
public:virtual void show(float temprature) = 0;virtual ~IDisplay() {}
};
class DisplayA : public IDisplay
{
public:virtual void show(float temprature){std::cout << "DisplayA Show" << std::endl;}
};
class DisplayB : public IDisplay
{
public:virtual void show(float temprature){std::cout << "DisplayB Show" << std::endl;}
};
class DateCenter
{
public:void Attach(IDisplay* ob){}void Detach(IDisplay* ob){}void Notify(){double d = 1.0;for (auto& ob : obs){ob->show(d);}}
private:std::list<IDisplay*> obs;
};
int main()
{DateCenter* DC = new DateCenter();IDisplay* Da = new DisplayA();DC->Attach(Da);IDisplay* Db = new DisplayB();DC->Attach(Db);// DC 发生变化DC->Notify();
}
http://www.dtcms.com/a/319378.html

相关文章:

  • react-router/react-router-dom
  • 对话访谈|盘古信息×冠捷科技:全球制造标杆的智能化密码
  • 鸿蒙类型转化Json转map
  • 【实录】NestJS 中的 IoC
  • 动力电池点焊机:效率质量双提升,驱动新能源制造升级
  • 中小制造企业数字化转型的可持续发展:IT架构演进与管理模式迭代
  • [盛最多水的容器]
  • WPS定制设置成绿色软件
  • Go语言Ebiten坦克大战
  • ADC常用库函数(STC8系列)
  • 现代制冷系统核心技术解析:从四大件到智能控制的关键突破
  • 客户管理系统的详细项目框架结构
  • 从房地产企业运作观企业能力建设
  • (第八期)VS Code 网页开发入门指南:从零开始掌握前端开发工具
  • Leetcode——菜鸟笔记2(移动0)
  • 92. 反转链表 II
  • 【实时Linux实战系列】实时分布式计算架构的实现
  • DataEase官方出品丨SQLBot:基于大模型和RAG的智能问数系统
  • 机柜指示灯识别误报率↓85%:陌讯多模态融合算法实战解析
  • Linux 内核:节点创建汇总
  • NFS 服务器
  • 【运维进阶】NFS 服务器
  • 16.Home-懒加载指令优化
  • .NET 10 新增功能系列文章5——C# 14 中的新增功能
  • latex in overleaf快速通关论文排版
  • E频段无线射频链路为5G网络提供高容量回程解决方案 — 第一部分
  • Linux(17)——Linux进程信号(下)
  • 【RabbitMQ面试精讲 Day 14】Federation插件与数据同步
  • 剑指offer第2版——面试题1:赋值运算符函数
  • 《常见高频算法题 Java 解法实战精讲(2):堆栈与递归》