Files
design-pattern/inc/observe.hpp
2025-06-02 13:57:29 +08:00

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