设计模式例程
This commit is contained in:
39
inc/observe.hpp
Normal file
39
inc/observe.hpp
Normal file
@ -0,0 +1,39 @@
|
||||
#pragma once
|
||||
#include "common.hpp"
|
||||
|
||||
class WaterHeater;
|
||||
|
||||
class Observer // <20>۲<EFBFBD><DBB2>ߵij<DFB5><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
public:
|
||||
virtual void Update(WaterHeater* waterHeater) const = 0;
|
||||
};
|
||||
|
||||
class WashingMode :public Observer // <20>۲<EFBFBD><DBB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
public:
|
||||
virtual void Update(WaterHeater* waterHeater) const;
|
||||
};
|
||||
|
||||
class DrinkingMode :public Observer // <20>۲<EFBFBD><DBB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
public:
|
||||
virtual void Update(WaterHeater* waterHeater) const;
|
||||
};
|
||||
|
||||
class WaterHeater // <20><><EFBFBD>۲<EFBFBD><DBB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
public:
|
||||
WaterHeater(int temperature = 25) :m_temperature(temperature) {};
|
||||
|
||||
int getTempetature();
|
||||
void setTemperature(int temperature);
|
||||
|
||||
virtual void HandleObserver(); // ֪ͨ<CDA8>۲<EFBFBD><DBB2><EFBFBD>
|
||||
bool RegisterObserver(Observer* inObserver); // <20><><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۲죩<DBB2><ECA3A9>
|
||||
bool UnRegisterObserver(Observer* inObserver); // ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۲죩<DBB2><ECA3A9>
|
||||
|
||||
protected:
|
||||
int m_temperature;
|
||||
vector<Observer*> m_Observers;
|
||||
};
|
Reference in New Issue
Block a user