设计模式 之 《观察者模式 (Observer)》
2013-11-10 21:18
423 查看
#ifndef __OBSERVER_MODEL__ #define __OBSERVER_MODEL__ #include <string> #include <iostream> #include <vector> using namespace std; /* GOOD:定义了一种一对多的关系,让多个观察对象(公司员工)同时监听一个主题对象(秘书), 主题对象状态发生变化时,会通知所有的观察者,使它们能够更新自己。 */ class Secretary; //看股票的同事类(观察对象,观察者) class StockObserver { private: string name; Secretary* sub; public: StockObserver(string strName, Secretary* strSub) { name = strName; sub = strSub; } void update(); }; //秘书类(主题对象,通知者) class Secretary { private: vector<StockObserver> observers; public: string action; void add(StockObserver ob){ observers.push_back(ob); } void notify() { vector<StockObserver>::iterator iter = observers.begin(); while( iter != observers.end() ) { (*iter).update(); ++iter; } } }; void StockObserver::update() { cout<<name<<":"<<sub->action<<",不要玩股票了,要开始工作了!"<<endl; } #endif //__OBSERVER_MODEL__ /* #include "ObserverModel.h" int _tmain(int argc, _TCHAR* argv[]) { //创建通知者 Secretary* p = new Secretary(); //观察者 StockObserver *s1= new StockObserver("小李",p); StockObserver *s2 = new StockObserver("小赵",p); //加入通知队列 p->add(*s1); p->add(*s2); //事件 p->action="老板来了"; //通知 p->notify(); return 0; } */
相关文章推荐
- 设计模式(十七)-观察者模式(Observer Pattern)——发送状态变化通知
- 设计模式(16) 观察者模式(OBSERVER)C++实现
- Java基础再回首之设计模式系列②-----Observer 观察者模式(案列教程,附带demo)
- Head First 设计模式 (二) 观察者模式(observer pattern) C++实现
- 设计模式(15)-观察者模式(Observer)
- 观察者模式(Observer Pattern) .NET设计模式
- 设计模式之(十、观察者模式(ObServer)/发布订阅模式(Pblish/Subscribe))
- 设计模式(16)-观察者模式(Observer)
- 设计模式学习—观察者模式(Observer Design Pattern)
- 观察者模式observer(行为型设计模式)
- 设计模式 - 观察者模式(Observer Pattern) 详细说明
- java设计模式进阶_observer
- c#中的委托、事件、Func、Predicate、Observer设计模式以及其他
- C++设计模式-Observer观察者模式
- java 设计模式学习笔记十三 observer设计者模式
- 设计模式学习笔记---观察者模式Observer pattern(Java版)
- Observer设计模式的陷阱,兼谈C++语言在模式面前的悲哀
- 设计模式之四 观察者模式(Observer Pattern)
- C#设计模式之十九:Observer模式(使用委托、事件)
- java设计模式之观察者模式Observer