#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 m_Observers; };