当前位置:问百书>百科问答>设计模式教程:观察者模式

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

2025-01-02 05:34:35 编辑:join 浏览量:562

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

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

首先看下观察者模式的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;

}

标签:设计模式,教程,观察者

版权声明:文章由 问百书 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.wenbaishu.com/answer/570037.html
热门文章
二维码