十、中介者模式

举报
IM_STONE 发表于 2020/12/28 22:53:41 2020/12/28
【摘要】 中介者模式:用一个中介对象来封装一系列的对象交互。中介者使得对象不需要相互的引用,从而使其耦合松散,可以独立的改变他们之间的交互。 #include<iostream> #include<string> using namespace std; class Country; //抽象类 联合国 class UN { public: virtual void del...

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

#include<iostream>
#include<string>
using namespace std;
class Country;
//抽象类  联合国
class UN
{
public:
	virtual void delcare(string message , Country *m_country){}
	virtual void initcountry(Country*s1,Country*s2){};
};
//国家
class Country
{
protected:
	UN *m_un;
public:
	Country(UN* name):m_un(name){}
	virtual void delcare(string m_message){}

};
//美国
class USA:public Country
{
public:
	USA(UN* name):Country(name){}
	void delcare(string message)
	{
		cout<<"美国: "<<message<<endl;
	}
};
//伊拉克
class Iraq:public Country
{
public:
	Iraq(UN* name):Country(name){}
	void delcare(string message)
	{
		cout<<"伊拉克:"<<message<<endl;
	}
};

//安理会
class Security:public UN
{
private:
	Country *m_usa;
	Country *m_iraq;

public: void initcountry(Country*s1 , Country*s2)
	{
		m_usa = s1;
		m_iraq = s2;
	} void delcare(string message , Country *m_country)
	{
		if(m_country==m_usa)
		{ m_usa->delcare(message);
		}
		else
		{ m_iraq->delcare(message);
		}
	}
};


int main()
{
	UN *m_sec = new Security();//创建安理会
	Country*country_usa = new USA(m_sec);//创建美国
	Country*country_iraq = new Iraq(m_sec);//创建伊拉克,美国和伊拉克有共同的中介者:安理会,m_sec
	m_sec->initcountry(country_usa,country_iraq); m_sec->delcare("我要干死你" , country_usa);
	m_sec->delcare("来呀,cnm,互相伤害呀" , country_iraq); cout<<endl<<endl;
	return 0;
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87

文章来源: blog.csdn.net,作者:IM-STONE,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/doubleintfloat/article/details/86564833

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。