40 lines
855 B
C++
40 lines
855 B
C++
#pragma once
|
|
#include "common.hpp"
|
|
|
|
class WaterHeater;
|
|
|
|
class Observer // 观察者的抽象基类
|
|
{
|
|
public:
|
|
virtual void Update(WaterHeater* waterHeater) const = 0;
|
|
};
|
|
|
|
class WashingMode :public Observer // 观察者类
|
|
{
|
|
public:
|
|
virtual void Update(WaterHeater* waterHeater) const;
|
|
};
|
|
|
|
class DrinkingMode :public Observer // 观察者类
|
|
{
|
|
public:
|
|
virtual void Update(WaterHeater* waterHeater) const;
|
|
};
|
|
|
|
class WaterHeater // 被观察的类
|
|
{
|
|
public:
|
|
WaterHeater(int temperature = 25) :m_temperature(temperature) {};
|
|
|
|
int getTempetature();
|
|
void setTemperature(int temperature);
|
|
|
|
virtual void HandleObserver(); // 通知观察者
|
|
bool RegisterObserver(Observer* inObserver); // 添加监听(观察)者
|
|
bool UnRegisterObserver(Observer* inObserver); // 删除监听(观察)者
|
|
|
|
protected:
|
|
int m_temperature;
|
|
vector<Observer*> m_Observers;
|
|
};
|