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

基于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;        

相关文章:

  • python实战,提取数据汇聚到表格中
  • 数据结构--顺序表(实现增删改查)
  • 【C++初阶】---类和对象(上)
  • Vue.js 应用的入口文件main.js
  • BetterDiscord macOS
  • win7忘记密码_通过MS17-010打进去_创建管理员账户
  • 做一个有天有地的css及html画的旋转阴阳鱼
  • Next.js中not-found.js触发方式详解
  • Unity Render Streaming项目之Multiplay经验
  • 【构建CV图像识别系统】从传统方法到深度学习
  • LangChain组件Tools/Toolkits详解(5)——返回产出artifact
  • 蓝桥杯真题 2109.统计子矩阵
  • 蓝桥杯备考-》单词接龙
  • bug:uni-file-picker上传图片报错,文件选择器对话框只能在由用户激活时显示,跨域cors
  • 用PostgreSQL玩转俄罗斯方块:当SQL成为游戏引擎
  • SpringBoot中安全的设置阿里云日志SLS的accessKey
  • RAG优化:python从零实现长上下文压缩技术
  • MySQL中DDL、DML、DQL、DCL四种语言详细介绍
  • SpringBoot-3-JWT令牌
  • Js 垃圾回收 与 内存泄漏
  • 英国收紧移民政策,技术工作签证、大学招生面临更严要求
  • 权益类基金发行回暖,这些老将挂帅新基,谁值得买?
  • 全国汽车以旧换新补贴申请量突破1000万份
  • 农行深圳市分行原副行长王国彪涉嫌严重违纪违法被查
  • 总没胃口,一吃就饱……别羡慕,也可能是生病了
  • “应急侠”上线,应急管理部正式发布应急科普IP形象