您的位置首页百科问答

设计模式教程:观察者模式

设计模式教程:观察者模式

的有关信息介绍如下:

设计模式教程:观察者模式

观察者模式又叫发布-订阅模式。下面小编就来介绍下观察者模式。

首先看下观察者模式的uml图:

抽象的观察者实现如下:

classObserver

{

public:

virtualvoidUpdate(int) = 0;

};

主题的接口实现如下:

class Subject

{

public:

virtual void Attach(Observer *) = 0;

virtual void Detach(Observer *) = 0;

virtual void Notify() = 0;

};

对于主题的实现:

class ConcreteSubject: public Subject{

public:

void Attach(Observer* o){ m_list.add(o); }

void Detach(Observer* o){ m_list.remove(o); }

void notify()

{

for_each(m_list.begin(), m_list.end(),[&](Observer *o ){o->update();});

}

int m_state;

private:

std::list m_list;

};

对观察者的实现:

class ConcreteObserver: public Subject

{

void update(){ cout << "hehhe"; }

};

对观察者的测试:

int main()

{

ConcreteSubject s;

ConcreteObserver o;

s.Attach(&o);

s.m_state = 1;

s.notify();

s.m_state = 2;

s.notify();

return 1;

}