21中介模式
1中介模式的核心內(nèi)容是:
A:通過中間這向多方發(fā)送消息
2中介模式的作用:通過中介模式模式中介對(duì)兩個(gè)互不通信的部分進(jìn)行發(fā)通知。
3中介模式具體描述
MEDIATOR調(diào)停者模式
//
調(diào)停者模式:調(diào)停者模式包裝了一系列對(duì)象相互作用的方式,
//使得這些對(duì)象不必相互明顯作用。從而使他們可以松散偶合。
//當(dāng)某些對(duì)象之間的作用發(fā)生改變時(shí),不會(huì)立即影響其他的一些對(duì)象之間的作用。
//保證這些作用可以彼此獨(dú)立的變化。調(diào)停者模式將多對(duì)多的相互作用轉(zhuǎn)化
//為一對(duì)多的相互作用。調(diào)停者模式將對(duì)象的行為和協(xié)作抽象化
//,把對(duì)象在小尺度的行為上與其他對(duì)象的相互作用分開處理。
//
四個(gè)MM打麻將,相互之間誰應(yīng)該給誰多少錢算不清楚了,
//幸虧當(dāng)時(shí)我在旁邊,按照各自的籌碼數(shù)算錢,賺了錢的從我這里拿,
//賠了錢的也付給我,一切就OK啦,俺得到了四個(gè)MM的電話。
//
中介者模式,找不到老婆可以相親靠婚介
4中介模式類圖
?
5.代碼:
#include<iostream>
#include <string>
using namespace std;
?
MEDIATOR調(diào)停者模式
//
調(diào)停者模式:調(diào)停者模式包裝了一系列對(duì)象相互作用的方式,
//使得這些對(duì)象不必相互明顯作用。從而使他們可以松散偶合。
//當(dāng)某些對(duì)象之間的作用發(fā)生改變時(shí),不會(huì)立即影響其他的一些對(duì)象之間的作用。
//保證這些作用可以彼此獨(dú)立的變化。調(diào)停者模式將多對(duì)多的相互作用轉(zhuǎn)化
//為一對(duì)多的相互作用。調(diào)停者模式將對(duì)象的行為和協(xié)作抽象化
//,把對(duì)象在小尺度的行為上與其他對(duì)象的相互作用分開處理。
//
四個(gè)MM打麻將,相互之間誰應(yīng)該給誰多少錢算不清楚了,
//幸虧當(dāng)時(shí)我在旁邊,按照各自的籌碼數(shù)算錢,賺了錢的從我這里拿,
//賠了錢的也付給我,一切就OK啦,俺得到了四個(gè)MM的電話。
//
中介者模式,找不到老婆可以相親靠婚介
class Country;
?
class UniteNations
{
public:
??? virtual void declare(string message, Country *colleague) = 0;
};
?
class Country
{
protected:
??? UniteNations *mediator;
public:
??? Country(UniteNations *mediator)
??? {
??????? this->mediator = mediator;
??? }
};
?
class USA :public Country
{
public:
??? USA(UniteNations *mediator) :Country(mediator)
??? {}
??? void declare(string message)
??? {
??????? cout << "美發(fā)布信息: " << message << endl;
??????? mediator->declare(message, this);
??? }
??? void getMessage(string message)
??? {
??????? cout << "美國獲得對(duì)方信息: " << message << endl;
??? }
};
?
class Iraq :public Country
{
public:
??? Iraq(UniteNations *mediator) :Country(mediator)
??? {}
??? void declare(string message)
??? {
??????? cout << "伊拉克發(fā)布信息: " << message << endl;
??????? mediator->declare(message, this);
??? }
??? void getMessage(string message)
??? {
??????? cout << "伊拉克獲得對(duì)方信息: " << message << endl;
??? }
};
?
//相當(dāng)于中介,向雙方發(fā)消息
class UnitedNationsSecurityCouncil :public UniteNations
{
public:
??? USA *usa;
??? Iraq *iraq;
??? void declare(string message, Country *colleague)
??? {
??????? if (colleague == usa)
??????? {
??????????? iraq->getMessage(message);
??????? }
??????? else
??????? {
??????????? usa->getMessage(message);
??????? }
??? }
};
?
int main()
{
??? UnitedNationsSecurityCouncil *unsc = new UnitedNationsSecurityCouncil();
?
??? USA *c1 = new USA(unsc);
??? Iraq *c2 = new Iraq(unsc);
?
??? unsc->usa = c1;
??? unsc->iraq = c2;
?
??? c1->declare("不準(zhǔn)開發(fā)核武器,否則打你!");
??? c2->declare("他媽的美國去死!");
?
??? cin.get();
??? return 0;
}
運(yùn)行結(jié)果如下:
?
總結(jié)
- 上一篇: 《平凡的世界》读后感(平凡的世界读后感1
- 下一篇: 01_ClickHouse概述,速度,分