首页 / C++ / 设计模式C++实现二十一:中介者模式
设计模式C++实现二十一:中介者模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了设计模式C++实现二十一:中介者模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1943字,纯文字阅读大概需要3分钟。
内容图文
![设计模式C++实现二十一:中介者模式](/upload/InfoBanner/zyjiaocheng/1290/fb02da10ef91409690ac8cea745c2b21.jpg)
中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。中介者是各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。
中介者模式很容易在系统中应用,也很容易在系统中误用。当系统出现多对多交互复杂的对象群是,不要急于使用中介者模式,而要先反思你的系统在设计上是不是合理。
优点:Mediator的出现减少了各个colleague的耦合,使得可以独立地改变和复用各个colleague类和Mediator;由于把对象如何协作进行了抽象,将中介作为一个独立的概念并将其封装在一个对象中,这样关注的对象就从对象各自本身的行为转移到它们之间的交互上来,也就是站在一个更宏观的角度去看待系统。
中介者模式一般应用于一组对象以定义良好但是复杂的方式进行通信的场合,以及想定制一个分布在多个类中的行为,而又不想生成太多的子类的场合。
#ifndef MEDIATOR_H #define MEDIATOR_H #include<iostream> #include<string> using namespace std; class Country; class UnitedNations { public: virtual void Declare(string message, Country *colleague)=0; }; class Country { protected: UnitedNations *mediator; public: Country(){} Country(UnitedNations *m) :mediator(m){} virtual void Declare(string m) = 0; virtual void GetMessage(string st) = 0; }; class USA :public Country { public: USA(UnitedNations *m) { mediator = m; } void Declare(string m) { mediator->Declare(m, this); } void GetMessage(string m) { cout << "美国获得对方信息: " << m << endl; } }; class Iraq :public Country { public: Iraq(UnitedNations* m) { mediator = m; } void Declare(string m) { mediator->Declare(m, this); } void GetMessage(string m) { cout << "伊拉克获得对方信息: " << m << endl; } }; class UnitedNationsSecurityCouncil :public UnitedNations { Country * colleague1; Country * colleague2; public: void SetColleague1(Country * c1){ colleague1 = c1; } void SetColleague2(Country * c2){ colleague2 = c2; } void Declare(string message, Country *colleague) { if (colleague == colleague1) colleague2->GetMessage(message); else colleague1->GetMessage(message); } }; #endif
#include "Mediator.h" int main() { UnitedNationsSecurityCouncil UNSC; USA usa(&UNSC); Iraq iraq(&UNSC); UNSC.SetColleague1(&usa); UNSC.SetColleague2(&iraq); usa.Declare("不准研制核武器,否则要发动战争!"); iraq.Declare("我们没有核武器,也不怕侵略!"); return 0; }
原文:http://blog.csdn.net/shiwazone/article/details/45819039
内容总结
以上是互联网集市为您收集整理的设计模式C++实现二十一:中介者模式全部内容,希望文章能够帮你解决设计模式C++实现二十一:中介者模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。