设计模式读书笔记:Mediator(中介者)

原创 2015年07月10日 21:04:45

意图:

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

结构图:来自 《23种设计模式 - 郗晓勇》


实现:https://github.com/panshiqu/patterns/tree/master/Mediator

Colleague

namespace NS_MEDIATOR {

class Colleague {
public:
	Colleague() {}
	virtual ~Colleague() {}
};

} /* namespace NS_MEDIATOR */
ConcreteColleague1

namespace NS_MEDIATOR {

class ConcreteColleague1 {
public:
	ConcreteColleague1() {}
	virtual ~ConcreteColleague1() {}
	bool needPrint(void) { return true; }
};

} /* namespace NS_MEDIATOR */
ConcreteColleague2

#include <iostream>

namespace NS_MEDIATOR {

class ConcreteColleague2 {
public:
	ConcreteColleague2() {}
	virtual ~ConcreteColleague2() {}
	void printSelf(void)
	{
		std::cout << "ConcreteColleague2" << std::endl;
	}
};

} /* namespace NS_MEDIATOR */
Mediator

namespace NS_MEDIATOR {

class Mediator {
public:
	Mediator() {}
	virtual ~Mediator() {}
};

} /* namespace NS_MEDIATOR */
ConcreteMediator

#include "ConcreteColleague1.h"
#include "ConcreteColleague2.h"

namespace NS_MEDIATOR {

class ConcreteMediator {
public:
	ConcreteMediator()
	{
		cc1 = new ConcreteColleague1();
		cc2 = new ConcreteColleague2();
	}
	virtual ~ConcreteMediator()
	{
		delete cc1;
		delete cc2;
	}
	void doSomething(void)
	{
		if (cc1->needPrint())
			cc2->printSelf();
	}

private:
	ConcreteColleague1 *cc1;
	ConcreteColleague2 *cc2;
};

} /* namespace NS_MEDIATOR */
main

#include "Mediator/ConcreteMediator.h"
using namespace NS_MEDIATOR;
int main(void)
{
	/*
	 * 这个设计模式估计大家都经常用,设想一下,我有若干个类A,B,C,D,我想组合它们实现实现不同的功能
	 * 譬如ABC实现功能,BCD又实现另外一个功能等等,我把这些实现用类封装起来,它就算是一个中介者了
	 * 为什么要有Colleague及Mediator基类,你直接看书中的场景,很好理解
	 */
	ConcreteMediator cm;
	cm.doSomething();
}
附加:
版权声明:本文为博主原创文章,未经博主允许不得转载。

设计模式C++描述----18.中介者(Mediator)模式

一. 举例 比如,现在中图和日本在关于钓鱼岛问题上存在争端。这时,联合国就会站出来,做为调解者,其实也没什么好调解的,钓鱼岛本来就是中国的,这是不争的事实!联合国也就是个传话者、发言人。 结构图如...
  • lwbeyond
  • lwbeyond
  • 2012年05月17日 11:56
  • 2422

设计模式(17)——中介者 Mediator

设计模式(17)——中介者 Mediator
  • leonliu06
  • leonliu06
  • 2017年11月05日 14:23
  • 116

C# 设计模式-中介者(Mediator)

用一个中介对象来封装一系列对象的交互,使得各对象不需要显示地相互引用,从而耦合松散。 主要组成: Mediator-中介者父类或接口 ConcreteMediator-具体中介者 Co...
  • m0_37862405
  • m0_37862405
  • 2018年01月07日 19:47
  • 90

设计模式(17)——Mediator(中介者)

中介者模式是什么? 中介者模式用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 中介者模式封装了对象之间的通信。对象不...
  • Paul_Huang_2011
  • Paul_Huang_2011
  • 2015年05月12日 22:59
  • 288

设计模式学习—Mediator(中介者)

意图:用一个中介对象来封装一系列的独享交互。中介者使得各对象不需要显式的相互引用,从而使得其耦合松散,而且可以独立的改变他们之间的交互.适用性:一组对象以定义好,但是通信复杂,相互依赖关系结构混乱一个...
  • valetine
  • valetine
  • 2011年05月15日 16:36
  • 215

设计模式之Mediator(中介者)

Mediator中介者模式定义:用一个中介对象来封装一系列关于对象交互行为.为何使用Mediator?各个对象之间的交互操作非常多;每个对象的行为操作都依赖彼此对方,修改一个对象的行为,同时会涉及到修...
  • bananabear
  • bananabear
  • 2007年04月06日 16:53
  • 458

Mediator(中介者)设计模式

一、概念 用一个中介者对象来封装一系列的对象交互。中介者使得各对象不需要显式地相互引用,从而使其松散耦合,而且可以独立地改变它们之间的交互。 二、模式结构图...
  • Sharing_Li
  • Sharing_Li
  • 2015年12月12日 21:23
  • 447

mediator中介者设计模式(行为模式)

意图: 用一个中介者对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。适用性: • 1)系统中对象之间存在复杂的引用关系,产生的相...
  • yuanlairuci1992
  • yuanlairuci1992
  • 2016年08月28日 13:33
  • 211

设计模式----Mediator(中介者)模式

设计模式----Mediator(中介者)模式 GoF:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地互相引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。 OOD鼓励奖行为...
  • lenhan12345
  • lenhan12345
  • 2006年12月22日 15:57
  • 465

设计模式(11)--Mediator中介者模式&Observer观察者模式

一、中介者模式理解起来很简单,即多个对象之间需要交互,那么这些对象间的交互就会形成网状结构。引入中介者,各对象根本不知道其它对象的存在,他们只需要把信息发送给中介者,由中介者来控制吧信息传递给哪些对象...
  • Face3
  • Face3
  • 2016年02月24日 17:17
  • 674
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式读书笔记:Mediator(中介者)
举报原因:
原因补充:

(最多只允许输入30个字)