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

基于C语言实现的观察者模式 以温度监控系统为例

场景为 温度监控系统:当温度传感器检测到温度变化时,自动通知所有注册的显示器(如LCD、手机App)更新显示。

场景描述

  • 主题(Subject):温度传感器,负责检测温度变化并通知观察者。

  • 观察者(Observer):显示器(LCD显示器、手机App),订阅温度数据并在温度变化时更新显示。

  • 1. 定义观察者接口与结构体 

#include <stdio.h>
#include <stdlib.h>

// 观察者抽象接口(结构体 + 函数指针)
typedef struct Observer {
    void (*update)(struct Observer *self, float temperature);  // 更新函数指针
    void *data;  // 观察者私有数据(如显示器名称)
} Observer;

// 温度传感器(主题)结构体
#define MAX_OBSERVERS 10  // 最大观察者数量
typedef struct {
    Observer *observers[MAX_OBSERVERS];  // 观察者列表
    int num_observers;                   // 当前观察者数量
    float current_temp;        


http://www.kler.cn/a/597681.html

相关文章:

  • 图扑软件 2D 组态:工业组态与硬件监控的物联网赋能
  • Android Compose 线性布局(Row、Column)源码深度剖析(十)
  • Python学习第二十一天
  • Java 输入1~100的整数,当读入负数时结束,统计输出每个数的数量
  • Git Flow 分支管理策略
  • 运算符重载(关键字operator的使用)
  • 【STM32单片机】#2 GPIO输出
  • 鼠标拖拽实现DIV尺寸修改效果实现
  • 零基础本地部署 ComfyUI+Flux.1 模型!5 分钟搭建远程 AI 绘图服务器(保姆级教程)
  • 六西格玛遇上Python:统计学的高效实践场
  • 基于SpringBoot的图书借阅小程序+LW参考示例
  • Matplotlib完全指南:数据可视化从入门到实战
  • upload-labs靶场学习记录2
  • 再学:区块链基础与合约初探 EVM与GAS机制
  • java开发接口中,响应速度率成倍数提高的方法与策略
  • 基于BClinux8部署Ceph 19.2(squid)集群
  • SQL——创建临时表方法总结
  • 城市街拍人像自拍电影风格Lr调色教程,手机滤镜PS+Lightroom预设下载!
  • Opencv计算机视觉编程攻略-第一节 图像读取与基本处理
  • 百度SEO和必应SEO优化方法