中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散。
游戏中的很多系统内部需要互相调用,如果歌系统之间直接调用,逻辑会变得很复杂。采用中介者模式,让中介则负责调用所有的系统,子系统只需要和中介者交互。
中介者模式针对模块内部,各个系统之间相互调度。
缺点:由于中介者控制了集中化,所以交互的复杂性变为了中介者的复杂性。
namespace MdeiatorMode { //Mediator 抽象中介者类 //定义一个抽象的发送消息方法,得到对象和发送信息 abstract class UnitedNations { //declare public abstract void Declare(string message, Country country); } 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("USA get message:" + message); } } class China : Country { public China(UnitedNations mediator) : base(mediator) { } public void Declare(string message) { mediator.Declare(message, this); } public void GetMessage(string message) { Console.WriteLine("China get message:" + message); } } class UnitedNationsSecurityCouncil : UnitedNations { private USA usa; private China china; public USA Usa { set { usa = value; } } public China China { set { china = value; } } //重写声明,事项对象间的通信 public override void Declare(string message, Country country) { if (country == usa) { china.GetMessage(message); } else { usa.GetMessage(message); } } } class Program { static void Main(string[] args) { UnitedNationsSecurityCouncil unsc = new UnitedNationsSecurityCouncil(); USA u = new USA(unsc); China c = new China(unsc); unsc.Usa = u; unsc.China = c; u.Declare("usa message"); c.Declare("china message"); Console.Read(); } } }
设计模式------中介者模式
最新推荐文章于 2024-08-06 07:31:27 发布