中介者模式:用一个中立的对象来封装一系列的对象的交互,中介者对象是各个对象不必显式的相互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。 #region 中介者模式 abstract class Country { protected UnitedNations mediator; public Country(UnitedNations uN) { mediator=uN; } } class USA : Country { public USA(UnitedNations uN) : base(uN) { } public void Declare(string message) { mediator.Declare(message, this); } public void GetMessage(string message) { Console.WriteLine("美国得到消息:{0}", message); } } class Iraq : Country { public Iraq(UnitedNations uN) : base(uN) { } public void Declare(string message) { mediator.Declare(message,this); } public void GetMessage(string message) { Console.WriteLine("伊拉克得到消息:{0}", message); } } abstract class UnitedNations { public abstract void Declare(string message, Country c); } class UnitedNationsSecurityCouncil : UnitedNations { private USA usaCountry; private Iraq iraqCountry; public USA USACountry { set { usaCountry = value; } } public Iraq IraqCountry { set { iraqCountry = value; } } public override void Declare(string message, Country c) { if (c == usaCountry) { iraqCountry.GetMessage(message); } else { usaCountry.GetMessage(message); } } } #endregion class Program { static void Main(string[] args) { #region 中介者模式 Console.WriteLine("中介者模式效果演示:"); UnitedNationsSecurityCouncil UNSC = new UnitedNationsSecurityCouncil(); USA usa = new USA(UNSC); Iraq iraq = new Iraq(UNSC); UNSC.USACountry = usa; UNSC.IraqCountry = iraq; usa.Declare("不想被轰炸就妥协!"); iraq.Declare("你丫整天轰炸不累么?蛋疼"); usa.Declare("哥哥钟意,你吹咩?"); iraq.Declare("屌"); #endregion } }