博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
中介者模式
阅读量:5092 次
发布时间:2019-06-13

本文共 2359 字,大约阅读时间需要 7 分钟。

一、前言

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

二、抽象中介类

  

1     //联合国机构2     public abstract class UnitedNations3     {4         public abstract void Declare(string message, Country colleague);5     }

 

三、中介具体类

  

1     //联合国安理会 2     public class UnitedNationsSecurtiy : UnitedNations 3     { 4         private USA colleague1; 5         private Iraq colleaque2; 6         //美国 7         public USA Colleaque1 8         { 9             set { colleague1 = value; }10         }11         //伊拉克12         public Iraq Colleaque213         {14             set { colleaque2 = value; }15         }16         //声明17         public override void Declare(string message, Country colleague)18         {19             if (colleague == colleague1)20             {21                 colleaque2.GetMessage(message);22             }23             else24             {25                 colleague1.GetMessage(message);26             }27         }28     }

 

四、抽象国家类

  

1     //国家类2     public abstract class Country3     {4         protected UnitedNations mediator;5         public Country(UnitedNations mediator)6         {7             this.mediator = mediator;8         }9     }

 

五、具体的国家类

  

1     public class USA : Country 2     { 3         public USA(UnitedNations mediator) : base(mediator) 4         { 5         } 6         //声明 7         public void Declare(string message) 8         { 9             mediator.Declare(message,this);10         }11         //获得消息12         public void GetMessage(string message)13         {14             Console.WriteLine("USA获得对方信息:" + message);15         }16     }17     public class Iraq : Country18     {19         public Iraq(UnitedNations mediator) : base(mediator)20         {21         }22         //声明23         public void Declare(string message)24         {25             mediator.Declare(message, this);26         }27         //获得消息28         public void GetMessage(string message)29         {30             Console.WriteLine("Iraq获得对方信息:" + message);31         }32     }

 

六、总结

  1、Mediator的出现减少了各个Colleague(国家)的耦合,使得可以独立地改变和复用各个Colleague类和Mediator。

  2、由于把对象如何写作坐了抽象,将中介作为一个独立的概念并将其封装在一个对象中,这样关注的对象就从对象各自本省的行为转移到他们之间的交互上来,也就站在更宏观的角度去看待系统。

  3、由于ConcreteMediator控制了集中化,于是就把交互复杂性变为了中介者的复杂性,这就使得中介者会变得比任何一个ConcreteColleague都复杂。

 

  参考数据:大话设计模式

转载于:https://www.cnblogs.com/hyunbar/p/10037217.html

你可能感兴趣的文章
log4j配置说明
查看>>
本地虚拟机中匿名ftp上传文件失败的问题
查看>>
数据与视图分离2
查看>>
东山里的传说——《荒原的呼唤》选载之四
查看>>
[双调]落梅风(寿阳曲).焰火似龙
查看>>
浣溪沙·江畔芦花【两首】
查看>>
git日常使用
查看>>
20145226夏艺华 《Java程序设计》第2周学习总结
查看>>
C#用链式方法表达循环嵌套
查看>>
wp7电流效果
查看>>
【BIEE】超过了已配置的最大允许输入记录数
查看>>
linux安装tomcat
查看>>
timer定时器
查看>>
CSUOJ 1170 A sample problem
查看>>
工厂模式
查看>>
设计模式 -- 模版模式
查看>>
iconfont-矢量图标字体的运用
查看>>
数字、字符串操作
查看>>
SVN Error: Unreadable path encountered; access denied;
查看>>
集合点(lr_rendezvous)
查看>>