观察者模式Observer

来源:互联网 发布:淘宝退换货须知怎么写 编辑:程序博客网 时间:2024/05/16 06:55
概念:
观察者模式是一种行为模式,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态。
提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对象之间保持状态同步。


应用:
1.侦听事件驱动程序设计中的外部事件
2.侦听/监视某个对象的状态变化
3.发布者/订阅者(publisher/subscriber)模型中,当一个外部事件(新的产品,消息的出现等等)被触发时,通知邮件列表中的订阅者


实例:
#include "stdafx.h"#include <iostream>#include <vector>#include <string>using namespace std;class Secretary;//观察者class PlayserObserver{public:PlayserObserver(string name, Secretary *secretary){m_name = name;m_secretary = secretary;}void update(string action){cout << "观察者收到消息:" << action << endl;}private:stringm_name;Secretary*m_secretary;};//通知者class Secretary{public:void addObserver(PlayserObserver *o){v.push_back(o);}void Notify(string action){for (vector<PlayserObserver *>::iterator it= v.begin(); it!=v.end(); it++ ){(*it)->update(action);}}void setAction(string action){m_action = action;Notify(m_action);}private:string m_action;vector<PlayserObserver *> v;//需要维护的队列};void main(){//通知者Secretary *s1 = new Secretary;//具体观察者 被通知对象PlayserObserver *po1 = new PlayserObserver("同事1", s1);PlayserObserver *po2 = new PlayserObserver("同事2", s1);s1->addObserver(po1);//当有新对象创建时,加入被通知队列s1->addObserver(po2);s1->setAction("放假了");while(1);return ;}


0 0
原创粉丝点击