观察者模式有叫发布订阅模式,它定义了一种一对多的依赖关系,让多个观察者监听同一个主题,

当主题对象状态发生变化时,回通知所有观察者,使它们能自动更新自己。(大话设计模式)。

具体代码如下:

 

//主题的基类

class Subject
{
private:
    std::string _sAction;
public:
    void setAction(std::string strAction){_sAction=strAction;};
    std::string getAction(){return _sAction;};
    Subject(){};
    virtual ~Subject(){};
    virtual void Attach(Observer* pObserver)=0;
    virtual void Detach(Observer* pObserver)=0;
    virtual void Notify()=0;
};

//观察者的基类

class Observer
{
private:
    std::string _sName;
    //Subject *_pSubject;
public:
    Observer():_sName(""){};
    Observer(

           std::string sName):_sName(sName)

    {

    };
    std::string getName(){return _sName;};
    void setName(std::string sName)

    {

            _sName=sName;

    };
    virtual ~Observer(){};
    virtual void Update()=0;
};

一个主题可以有多个观察者订阅,通过调用Attach和Detach订阅和取消订阅。发布者通过在Notify

函数中调用观察者的Updata方法,通知订阅者更新数据。