用代码和UML图化解设计模式之《观察者模式》
来源:互联网 发布:巨灵财经数据库 编辑:程序博客网 时间:2024/05/29 09:30
观察者模式应该说比较简单,就是将不同观察者注册到被观察者内部,被观察者做了什么动作,都会通知到被观察者。。。
代码中,被观察者也可以形成接口,有不同的子类,被观察,更灵活一些。。。
下面代码
// Observer.cpp : 定义控制台应用程序的入口点。//************************************************************************/ /* @filename Observer.cpp@author wallwind @createtime 2012/11/2 23:58@function 观察者模式@email wochenglin@qq.com @weibo @成林有理想*/ /************************************************************************/#include "stdafx.h"#include <iostream>#include <vector>using namespace std;/*观察者*/class IObserver{public:IObserver(){}virtual ~IObserver(){}virtual void update() = 0;};/*观察者1;*/class FirstObserver :public IObserver{public:FirstObserver(){}virtual ~FirstObserver(){}virtual void update(){cout<<"FirstObserver KNOW OBSERVERABLE DO ACTION" <<endl;}};class SecondObserver :public IObserver{public:SecondObserver(){}virtual ~SecondObserver(){}virtual void update(){cout<<"SecondObserver KNOW OBSERVERABLE DO ACTION" <<endl;}};/**被观察者*/class Observable{public:Observable(){}~Observable(){}void addObser(IObserver* obser){m_obserSet.push_back(obser);}void removeObser(IObserver* obser){m_obserSet.pop_back();}void doAction(){cout<<"Observable do some action " <<endl;this->notifyAllObser();}void notifyAllObser(){vector< IObserver* > ::iterator iter = m_obserSet.begin();for (;iter !=m_obserSet.end();iter++){(*iter)->update();}}private:vector< IObserver* > m_obserSet;};int _tmain(int argc, _TCHAR* argv[]){IObserver * fober = new FirstObserver();IObserver * sober = new SecondObserver();Observable * oble = new Observable;oble->addObser(fober);oble->addObser(sober);oble->doAction();return 0;}
在类设计上可以更加灵活。
更多文章,欢迎访问:http://blog.csdn.net/wallwind
- 用代码和UML图化解设计模式之《观察者模式》
- 用代码和UML图化解设计模式之《策略模式》
- 用代码和UML图化解设计模式之《代理模式》
- 用代码和UML图化解设计模式之《工厂模式》
- 用代码和UML图化解设计模式之《抽象工厂模式》
- 用代码和UML图化解设计模式之《门面模式》
- 用代码和UML图化解设计模式之《适配器模式》
- 用代码和UML图化解设计模式之《模板方法模式》
- 用代码和UML图化解设计模式之《创建者模式》
- 用代码和UML图化解设计模式之《桥接模式》
- 用代码和UML图化解设计模式之《命令模式》
- 用代码和UML图化解设计模式之《装饰模式》
- 用代码和UML图化解设计模式之《迭代器模式》
- 用代码和UML图化解设计模式之《责任链模式》
- 设计模式--观察者模式--UML
- 设计模式之观察者模式C++代码
- 设计模式之-观察者
- 设计模式之观察者
- wamp5的www目录如何更改
- 彼岸花开,忧伤了谁的等待?诗意伤感日志
- java stringreplace与replaceAll区别
- container_of 理解
- html5离线应用application cache
- 用代码和UML图化解设计模式之《观察者模式》
- SDI接口
- TCP/IP学习笔记
- DQ与DQS [转]
- JS手写AJAX代码
- Universal Progress Dialog
- 后台处理图片选择器
- mysql入门-1-MYSQL 安装软件及环境的建立。
- 相同的正则表达式在C#代码中和js中 有所不同