C++ 观察者模式
Muduo不好啃,也怪自己之前没学过设计模式,如今只能临时抱佛脚了。
简介
什么是观察者模式?在学习这个设计模式之前,先要知道一件事情:回调函数(callback),在知乎上关于回调函数有一个形象的比喻:
你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件。回答完毕。
作者:常溪玲
链接:https://www.zhihu.com/question/19801131/answer/13005983
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
经过一天的研究,我发现观察者模式跟回调函数很像,在一块理解起来很方便。
观察者模式又叫做发布-订阅模式,跟回调类似,接着上面的例子,你就是观察者,而店员就是对象,当到货之后(状态发生变化),就通知观察者。
关于具体概念,菜鸟还是不长篇大论了,还是偏理解为主,可以参考:http://blog.csdn.net/wuzhekai1985/article/details/6674984
实现
对muduo 源码中的~/recipes/thread/test/observer.cc
做了一些修改。主要是进行简单的解耦操作。
Observer观察者
//Observer.h
#ifndef __OBSERVER_H__
#define __OBSERVER_H__
#include <iostream>
#include <string>
#include "Observable.h"
class Observable;
class Observer//抽象类
{
public:
virtual ~Observer();
virtual void update()=0;//纯虚函数
void observe(Observable *s);//订阅