【HeadFirst 设计模式】观察者模式的C++实现

一、案例背景

贵公司获选为我公司建立下一代Internet气象观测站! 该气象站必须建立在我们专利申请中的WeatherData对象上,由WeatherData对象负责追踪目前的天气状况 (温度、 湿度、气压)。

我们希望贵公司能建立一个应用,有三种布告板,分别显示目前的状况、气象统计及简单的预报。 当WeatherObject对象获得最新的测量数据时, 三种布告板 必须实时更新。 而且,这是一个可以扩展的气象站,Weather -0-Rama气象 站希望公布 一组API,好让其他开发人员可以写出自己的 气象布告板,并插入此应用中。我们希望贵公司能提供这样的API。

二、案例分析

这是一种很常见的场景。WeatherObject对象相当于一个主题,管理了三个对象:温度、 湿度、气压。三种布告板需要订阅这个主题,以便拿到最新的数据并显示。

实现这些并不难,难的是你要未雨绸缪般预料到将来你的工作将会发生什么样的变化,好让自己在这些变化来临时,快速的去响应变化,从而少加点班。

你的工作是为对方设计良好的接口,在这里我们假设甲方提供的信息种类是固定的,你只需要审视自己负责的部分工作即可。首先,显而易见,主题的数量有可能发生变化:减少或增加。其次,甲方提供的信息是固定的,但是内容的表现形式也有可能变化。

在这里插入图片描述

三、代码实现

这里给出相关案例的C++代码实现:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

//@brief: 观察者(抽象接口)
class Obser
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pyrojewel_js

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值