// 设计模式测试.cpp : 定义控制台应用程序的入口点。
// 观察者模式
#include "stdafx.h"
#include <string>
#include <iostream>
#include <vector>
#include <list>
using namespace std;
/*************************观察者模式之气象布告板示例*********************************/
//观察者接口
class I_Observer
{
public:
virtual void update(float temperature, float humidity, float pressure) = 0;
};
//展示接口
class IDisplayElement
{
public:
virtual void display() = 0;
};
//主题接口
class I_Subject
{
public:
virtual void registerObserver(I_Observer *o)=0;
virtual void removeObserver(I_Observer *o) = 0;
virtual void notifyObserver() = 0;
};
class WeatherData : public I_Subject
{
list<I_Observer*> observers;
float temperature;
float humidity;
float pressure;
public:
WeatherData() {
}
void registerObserver(I_Observer *o) {
observers.push_back(o);
}
void removeObserver(I_Observer *o) {
list<I_Observer *>::iterator iter = observers.begin(
C++:设计模式之观察者模式(例子)
最新推荐文章于 2024-08-20 00:23:27 发布
本文通过C++代码展示了如何实现观察者模式,创建了一个气象数据主题`WeatherData`,它能注册和通知多个观察者,如`CurrentConditionsDisplay`和`ForecastConditionsDisplay`。这些观察者根据接收到的气象数据更新并显示当前条件和未来预测。
摘要由CSDN通过智能技术生成