《C嵌入式编程设计模式》---读书笔记(3)

3.5 观察者模式

    观察者模式提供一种方法来使对象“监听”其他对象,而不需要修改任何数据服务器。这意味着传感器数据能够很容易地分享给其他元素,当编写传感器代理时,元素可能甚至还不存在。

3.5.1 抽象

    观察者模式(“发布-订阅模式”)通知一组感兴趣的客户相关数据已经改变。它不需要数据服务器对客户有任何先验信息,而客户仅提供订阅功能,允许客户在通知列表中动态添加(或删除)其本身。数据服务器可以执行各种通知策略,最常见的是当新数据到达时发送数据,同时客户也能定期更新。

3.5.2 问题

    在理想状态下,当数据已经改变时,每个客户都能够定期从数据服务器获取数据,但这造成计算浪费;而且客户通常不知道新数据何时可用,造成通信资源浪费。如果数据服务器推送数据,那么它必须知道其所有客户,打破常规客户机-服务器关系需要改变服务器,添加新的客户。

3.5.3 结构模式

    如下图所示,AbstractSubject添加维护感兴趣订阅者类列表机制的数据服务器。通过传递指向accept(Datum)函数的指针,客户自己添加进入通知列表,并且通过使用相同的指针调用取消订阅从列表中删除。当AbstractSubject决定通知它的客户时,notify()函数遍历客户列表,调用指向函数,传递相关数据。AbstractClient提供accept(Datum)函数接收和处理进入的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值