行为型模式-中介者mediator
2016-01-11 21:41
225 查看
一般用于一组对象以定义良好但是复杂的方式进行通信的场合
using System; using System.Collections.Generic; using System.Text; namespace 中介者模式 { class Program { static void Main(string[] args) { UnitedNationsSecurityCouncil UNSC = new UnitedNationsSecurityCouncil(); USA c1 = new USA(UNSC); Iraq c2 = new Iraq(UNSC); UNSC.Colleague1 = c1; UNSC.Colleague2 = c2; c1.Declare("不准研制核武器,否则要发动战争!"); c2.Declare("我们没有核武器,也不怕侵略。"); Console.Read(); } } //联合国机构 abstract class UnitedNations { /// <summary> /// 声明 /// </summary> /// <param name="message">声明信息</param> /// <param name="colleague">声明国家</param> public abstract void Declare(string message, Country colleague); } //联合国安全理事会 class UnitedNationsSecurityCouncil : UnitedNations { private USA colleague1; private Iraq colleague2; public USA Colleague1 { set { colleague1 = value; } } public Iraq Colleague2 { set { colleague2 = value; } } public override void Declare(string message, Country colleague) { if (colleague == colleague1) { colleague2.GetMessage(message); } else { colleague1.GetMessage(message); } } } //国家 abstract class Country { protected UnitedNations mediator; public Country(UnitedNations mediator) { this.mediator = mediator; } } //美国 class USA : Country { public USA(UnitedNations mediator) : base(mediator) { } //声明 public void Declare(string message) { mediator.Declare(message, this); } //获得消息 public void GetMessage(string message) { Console.WriteLine("美国获得对方信息:" + message); } } //伊拉克 class Iraq : Country { public Iraq(UnitedNations mediator) : base(mediator) { } //声明 public void Declare(string message) { mediator.Declare(message, this); } //获得消息 public void GetMessage(string message) { Console.WriteLine("伊拉克获得对方信息:" + message); } } }
相关文章推荐
- swift基础(三)函数定义
- 栈具有记忆功能介绍
- C++开发人脸性别识别教程(9)——搭建MFC框架之显示图片
- gradle学习系列之eclipse中简单构建android项目
- 行为型模式-迭代器interator
- IOS-UITableView 及自定义cell
- 行为型模式-解释器interpreter
- xmpp版即时聊天
- Java反射:边看书边总结
- Js-Html 前端系列--显示有格式的文本
- 百度sdk定位监听 onReceiveLocation没有执行?
- sonar-maven-plugin错误2
- 【Spring3】(2)常用注入
- nyoj--99--单词拼接(欧垃图判定+输出)
- 安卓代码强壮性与Fragment理解
- 行为型模式-命令command
- JAVA中的String常量池
- Jquery动态添加节点,绑定事件失效的解决方法
- web.xml加载顺序
- 手机验证码登录与注册