C++设计模式:观察者模式(监听者模式)

本文介绍了C++中的观察者模式,即监听者模式,用于在事件发生时通知感兴趣的监听者。文章详细阐述了模式的实现,包括如何在事件到来时通知监听者、注册监听者和事件的关系,以及如何处理一个监听者可能对多个事件感兴趣的情况。监听者类设计为抽象类,事件处理函数为纯虚函数,允许不同的监听者对事件做出不同的响应。通过一个主函数示例展示了如何定义和使用监听者类。
摘要由CSDN通过智能技术生成

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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值