思考设计模式在自助终端软件上的应用 ——Observer(观察着)模式
2009-08-07 09:53
561 查看
主要思想:将各硬件模块作为观察者加入观察者队列,当机器状态改变时Notify所有观察者,各观察者根据消息类型做不同反应或不作反应。
下面贴出代码简单实现,希望引起圈内朋友的关注,起到抛砖引玉的效果。
下面两个类是两个基类.
常用的状态,各设备接收到状态信息作出不同反应.
以下是派生类:
下面是几个设备类,作为例子,只使用了3个设备,设备函数也只列举了几个:
客户端代码:
稍微留一张以前做过的图
,:-)
下面贴出代码简单实现,希望引起圈内朋友的关注,起到抛砖引玉的效果。
下面两个类是两个基类.
class CObserver { public: CObserver(); virtual ~CObserver(); public: virtual void Update(HouEvent nEvent)=0; }; class CSubject { public: CSubject(); virtual ~CSubject(); public: void Attach(CObserver * pObserver); // 增加观察者 void Detach(CObserver * pObserver); // 移除观察者 void NotifyAll(HouEvent nEvent); // 通知 private: list<CObserver*> m_ObserverList; };
常用的状态,各设备接收到状态信息作出不同反应.
enum HouEvent { HOU_Powerup = 1001, // 启动模式 HOU_InService, // 服务模式 HOU_Suspend, // 暂停服务 HOU_Maintenance, // 维护模式 HOU_Closed, // 关闭服务 };
以下是派生类:
class CMachine : public CSubject { public: CMachine(); virtual ~CMachine(); void InitMachine(); void SetState(HouEvent nEvent); // HouEvent GetState(); protected: CCRP * m_pCRP; CPIN * m_pPIN; CRCW * m_pRCW; };
下面是几个设备类,作为例子,只使用了3个设备,设备函数也只列举了几个:
class CCRP : public CObserver { public: CCRP(); virtual ~CCRP(); public: // 初始化 int InitDev(); // 重启 int Reset(); // 打印 int Print(); virtual void Update(HouEvent nEvent); }; class CPIN : public CObserver { public: CPIN(); virtual ~CPIN(); public: // 初始化 int InitDev(); // 重启 int ResetDev(); // 输入密码 int InputPin(); // 输入明文 int InputClear(); virtual void Update(HouEvent nEvent); }; class CRCW : public CObserver { public: CRCW(); virtual ~CRCW(); public: virtual void Update(HouEvent nEvent); };
客户端代码:
void main() { // CSubject subject; CMachine Machine; Machine.InitMachine(); // Attach应该在CSubject的派生类里调 Machine.SetState(HOU_Powerup); Machine.SetState(HOU_InService); Machine.SetState(HOU_Maintenance); }
稍微留一张以前做过的图
,:-)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200908/a612def11e9f5e50b011f8df56eda7b9.gif)
相关文章推荐
- 思考设计模式在自助终端软件上的应用 ——Observer(观察着)模式
- 思考设计模式在自助终端软件上的应用 ——Observer模式
- 设计模式:Observer(观察器)
- 关于软件架构、设计模式和应用框架的一点看法
- 浅学设计模式之观察者<Observer>模式及在android中的应用
- 消息订阅、派送设计模式在“平台-插件”式软件架构设计中的应用
- 使用Micrisoft.net设计方案 第三章Web表示模式 Web模式集群详细介绍 Observer(观察器)
- 微软的模式与实施方案团队发布云托管应用软件的设计模式
- 热水器的委托应用与Observer设计模式
- 设计模式与泡mm的关系之Observer观察者模式及再思考
- Java---设计模式app小软件汇总应用
- 浅学设计模式之观察者<Observer>模式及在android中的应用
- C# 通过 Observer观察者 设计模式 来理解 抽象类 和 接口 应用在什么地方
- 设计模式在软件应用系统开发中的实战参考
- 浅学设计模式之观察者<Observer>模式及在android中的应用
- Java---设计模式app小软件汇总应用
- 论设计模式在软件开发中的应用
- 设计模式在软件应用系统开发中的实战参考
- 论设计模式在软件开发中的应用
- 设计模式 - 在软件开发中的应用