首页 > 其他 > 详细

观察者模式

时间:2016-10-27 19:04:04      阅读:185      评论:0      收藏:0      [点我收藏+]

#include <iostream>
#include <string>
#include <vector>
#include <map>

using namespace std;

class Observer
{
public:
    virtual void update() = 0;
};

typedef vector<Observer*> VEC_OBS;

class Subject
{
private:
    VEC_OBS mObs;
public:
    void addObserver(Observer * obs)
    {
        this->mObs.push_back(obs);
    }
    void delObserver(Observer * obs)
    {

    }
    void notifyObserver()
    {
        VEC_OBS::iterator iter = mObs.begin();
        for(iter=mObs.begin(); iter!= mObs.end(); iter++)
        {
            Observer * pObs = *iter;
            pObs->update();
        }
    }
    virtual void doSomething() = 0;
};

class ConSubject1 : public Subject
{
public:
    void doSomething()
    {
        cout<<"被观察者事件发生"<<endl;
        this->notifyObserver();
    }
};

class Observer1: public Observer
{
public:
    void update()
    {
        cout<<"观察者1收到消息"<<endl;
    }
};

class Observer2: public Observer
{
public:
    void update()
    {
        cout<<"观察者2收到消息"<<endl;
    }
};

void main()
{
    Subject * pSub = new ConSubject1();
    pSub->addObserver(new Observer1());
    pSub->addObserver(new Observer2());
    pSub->doSomething();
}

观察者模式

原文:http://www.cnblogs.com/taotaoju/p/6004899.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!