文章目录
1. 什么是观察者模式?
观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
2. 为什么需要观察者模式?
- 实现对象之间的松耦合
- 支持广播通信
- 实现一对多的依赖关系
- 满足开闭原则
- 状态变化的实时通知
3. 实际应用场景
- 传感器数据监控
- 事件处理系统
- 温度监控系统
- 股票价格监控
- 消息订阅系统
4. 代码实现
4.1 UML 关系图

4.2 头文件 (observer.h)
#ifndef OBSERVER_H
#define OBSERVER_H
#include <stdint.h>
#include <stdbool.h>
// 前向声明
typedef struct Subject Subject;
typedef struct Observer Observer;
// 观察者结构体
struct Observer {
void (*update)(Observer* self, float value);
char name[32];
};
// 主题结构体
struct Subject {
Observer* observers[10]; // 最多支持10个观察者
int observer_count;
float temperature; // 温度值
void (*attach)(Subject* self, Observer* observer);
void (*detach)(Subject* self, Observer* observer);
void (*notify)(Subject* self);
void (*set_temperature)(Subject* self, float temp);
};
// 创建函数
Subject* create_subject(void);
Observer* create_temperature_display(const char* name);
Observer* create_temperature_logger(const char* name);
Observer* create_temperature_alarm(const char* name);
// 销毁函数
void destroy_subject(Subject* subject);
void

本文深入探讨了C语言中观察者模式的应用,详细解析了其在系统子模块间通信的作用,通过定义对象间的依赖关系,确保当一个对象状态改变时,所有依赖对象能自动更新。文章提供了具体的C语言实现案例,包括触发更新函数接口的设计,采集线程及波形存储标志的等待更新机制。
最低0.47元/天 解锁文章

1167

被折叠的 条评论
为什么被折叠?



