1中介模式的核心内容是:
A:通过中间这向多方发送消息
2中介模式的作用:通过中介模式模式中介对两个互不通信的部分进行发通知。
3中介模式具体描述
MEDIATOR调停者模式
调停者模式:调停者模式包装了一系列对象相互作用的方式,
使得这些对象不必相互明显作用。从而使他们可以松散偶合。
当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用。
保证这些作用可以彼此独立的变化。调停者模式将多对多的相互作用转化
为一对多的相互作用。调停者模式将对象的行为和协作抽象化
,把对象在小尺度的行为上与其他对象的相互作用分开处理。
四个MM打麻将,相互之间谁应该给谁多少钱算不清楚了,
幸亏当时我在旁边,按照各自的筹码数算钱,赚了钱的从我这里拿,
赔了钱的也付给我,一切就OK啦,俺得到了四个MM的电话。
中介者模式,找不到老婆可以相亲靠婚介
4中介模式类图
5.代码:
#include<iostream>
#include<string>
usingnamespacestd;
////MEDIATOR调停者模式
//
////调停者模式:调停者模式包装了一系列对象相互作用的方式,
//使得这些对象不必相互明显作用。从而使他们可以松散偶合。
//当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用。
//保证这些作用可以彼此独立的变化。调停者模式将多对多的相互作用转化
//为一对多的相互作用。调停者模式将对象的行为和协作抽象化
//,把对象在小尺度的行为上与其他对象的相互作用分开处理。
//
////四个MM打麻将,相互之间谁应该给谁多少钱算不清楚了,
//幸亏当时我在旁边,按照各自的筹码数算钱,赚了钱的从我这里拿,
//赔了钱的也付给我,一切就OK啦,俺得到了四个MM的电话。
//
////中介者模式,找不到老婆可以相亲靠婚介
classCountry;
classUniteNations
{
public:
virtualvoiddeclare(stringmessage,Country
*colleague) = 0;
};
classCountry
{
protected:
UniteNations
*mediator;
public:
Country(UniteNations
*mediator)
{
this->mediator
= mediator;
}
};
classUSA
:publicCountry
{
public:
USA(UniteNations
*mediator) :Country(mediator)
{}
voiddeclare(stringmessage)
{
cout
<<"美发布信息: "
<< message <<endl;
mediator->declare(message,this);
}
voidgetMessage(stringmessage)
{
cout
<<"美国获得对方信息: "
<< message <<endl;
}
};
classIraq
:publicCountry
{
public:
Iraq(UniteNations
*mediator) :Country(mediator)
{}
voiddeclare(stringmessage)
{
cout
<<"伊拉克发布信息: "
<< message <<endl;
mediator->declare(message,this);
}
voidgetMessage(stringmessage)
{
cout
<<"伊拉克获得对方信息: "
<< message <<endl;
}
};
//相当于中介,向双方发消息
classUnitedNationsSecurityCouncil
:publicUniteNations
{
public:
USA
*usa;
Iraq
*iraq;
voiddeclare(stringmessage,Country
*colleague)
{
if
(colleague ==
usa)
{
iraq->getMessage(message);
}
else
{
usa->getMessage(message);
}
}
};
intmain()
{
UnitedNationsSecurityCouncil
*unsc =
newUnitedNationsSecurityCouncil();
USA
*c1 =
newUSA(unsc);
Iraq
*c2 =
newIraq(unsc);
unsc->usa
= c1;
unsc->iraq
= c2;
c1->declare("不准开发核武器,否则打你!");
c2->declare("他妈的美国去死!");
cin.get();
return
0;
}
运行结果如下: