观察者模式
来源:互联网 发布:java信贷项目 编辑:程序博客网 时间:2024/06/05 17:32
#pragma once#include <Windows.h>#include <iostream>#include <vector>using namespace std;/*观察者模式(适合设计一个事件触发处理机制的功能)(1)定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。其实质是被观察者类中关联一下观察者类,并且在处理一些事情后,遍历观察者类的相关的方法。角色:(a)被观察者使用Vector容器存放观察者对象attach方法添加观察者对象到容器detach方法从容器删除观察者对象notify方法依次调用观察者对象的对应方法(b)观察者有一个update方法,在被观察者状态发生变化时,这个方法就会被触发调用(c)具体被观察者使用此角色易于扩展,在此角色中定义具体的业务逻辑(d)具体观察者观察者接口的具体实现,定义被观察者对象状态发生改变时所要处理的逻辑*/class Iobserver{public:virtual void update() =0;};class observer1 : public Iobserver{public:virtual void update(){cout<<"观察者1事件发生,并进行消息处理"<<endl;}};class observer2 : public Iobserver{public:virtual void update(){cout<<"观察者2事件发生,并进行消息处理"<<endl;}};//////////////////////////////////////////////////////////////////////////class Iobservable{public:vector<Iobserver*>m_vecObserve;virtual void attachVec(Iobserver* pOb){m_vecObserve.push_back(pOb);}virtual void ClearVec(){m_vecObserve.clear();}virtual void notifyMsg(){for (int i=0;i<m_vecObserve.size();i++){m_vecObserve.at(i)->update();}}public:virtual void doSomething() = 0;};class observable : public Iobservable{virtual void doSomething(){cout<<"被观察者事件发生"<<endl;this->notifyMsg();}};void main(){Iobservable *pIobserable = new observable(); Iobserver *pObserver1 = new observer1;pIobserable->attachVec(pObserver1); Iobserver *pObserver2 = new observer2;pIobserable->attachVec(pObserver2);pIobserable->doSomething();delete pObserver1;delete pObserver2;pIobserable->ClearVec();delete pIobserable;pIobserable = NULL;}
0 0
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- xcode 安装 svn command line
- 在页面加载的时候自动为日期插件添加当前日期。
- 黑马程序员_程序流程控制
- WinXp 下安装WAMP的错误总结
- hdu-1521-排列组合(指数型母函数)
- 观察者模式
- OpenERP Server Developers Documentation 之 Module 之 Views and Events 之 二
- Jquery 通过 文本 text设置 select 下拉框 的 选中项 (非通过 value)
- struts2的result-type详解
- 一组超级黄色笑话——————【Badboy】
- Wince6.0 同时支持繁简体显示
- Activity启动模式 及 Intent Flags 与 栈 的关联分析
- silent install DB
- HDOJ 题目1521排列组合(指数型母函数,模板)