中介者模式

简介

中介者模式:

用一个中介对象封装一系列的对象交互。中介者使各对象不需要显式的相互引用,从而使其耦合松散,而且了以独立的改变他们之间的交互。

 

组成对象

Mediator抽象中介者角色,定义统一接口,用于各个同事角色之间的通信

ConcreteMediator具体中介者角色,通过协调各个同事角色实现协作行为,依赖于各个同事

Colleague同事角色,每个同事角色都应该知道中介的存在,且同事间通信一定是通过中介协作;同事行为分:自发行为,依赖行为。

 

常用的场景

简单但是不容易使用的一个模式。把握一个准则:当类图中出现蜘蛛网时,尝试使用中介者

实际应用:机场调度中心,MVC框架中的C(Controller),媒体网关,中介服务

 

优点:

减少类间依赖,把一对多的依赖转变成一对一。同事类只依赖中介,降低类间耦合

缺点:

中介者会随着同事类的增多,逻辑越来越复杂


测试代码

 

#include <iostream>
#include <assert.h>
#include <vector>
using namespace std;
#include <string>

#include <list>

class FBaseColleague;

class FBaseMediator
{
public:
	virtual void sendMessage(FBaseColleague* pMessage, string message) = 0;
};

class FBaseColleague
{
public:
	FBaseColleague( FBaseMediator* mediator )
	{
		m_pMediator = mediator;
	};
	~FBaseColleague(){};

private:
	FBaseMediator* m_pMediator;
};

class FMediator
{
public:
	FBaseColleague* m_pAColleague;
	FBaseColleague* m_pBColleague;

	void sendMessage( FBaseColleague* pMessage, string message ){};
};

class FColleagueA : public FBaseColleague
{
public:
	void sendMessage(FBaseColleague* pMessage, string message){};
};

class FColleagueB : public FBaseColleague
{
public:
	void sendMessage(FBaseColleague* pMessage, string message){};
};

void main()
{
	

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值