C++设计模式:观察者模式(监听者模式)
所谓观察者监听者模式就是:当观察者观察到事件到来之后,通知对该事件感兴趣的监听者进行相应的操作
需要解决的问题:
- 观察者需要做的事情?
①事件到来的时候,通知感兴趣的监听者
②事件到来之前,先把监听者和事件的关系进行注册 - 如何通知对该事件感兴趣的监听者?
调用该监听者的接口(函数)。 - 如何处理监听者和事件之间的关系?
可能存在一个监听者对多个事件感兴趣,所以这里我们用C++中STL的map映射容器(一对多)。
key存放事件名称,value存放一个vector容器,vector容器存放对该事件感兴趣的监听者。
监听者类的设计:
class Listener{
public:
Listener(string name) :mname(name){
}
virtual void DealMessage(int message) = 0;
protected:
string mname;
};
这里将事件处理函数设计成纯虚函数的原因:每个监听者感兴趣的事件不同,做出的操作也不同。
- 模拟一个监听者1类的设计
class Listener1 :public Listener
{
public:
Listener1(string name) :Listener(name){
}
void DealMessage(int message)
{
switch