23种设计模式----中介者模式(Mediator Pattern)
2019-03-12 10:20
225 查看
中介者模式,定义了一个中介对象来封装一系列对象之间的交互关系。中介者使各个对象之间不需要显式地相互引用,从而使耦合性降低,而且可以独立地改变它们之间的交互行为。
中介者模式设计两个具体对象,一个是用户类,另一个是中介者类,根据针对接口编程原则,则需要把这两类角色进行抽象,所以中介者模式中就有了4类角色,它们分别是:抽象中介者角色,具体中介者角色、抽象同事类和具体同事类。中介者类是起到协调各个对象的作用,则抽象中介者角色中则需要保存各个对象的引用。
public abstract class AbstractCardPartner { public int money { get; set; } public abstract void ChangeCount(int count, AbstractMedia media); } public class ParterA : AbstractCardPartner { public override void ChangeCount(int count, AbstractMedia media) { media.aWin(count); } } public class ParterB : AbstractCardPartner { public override void ChangeCount(int count, AbstractMedia media) { media.bWin(count); } } public abstract class AbstractMedia { public AbstractCardPartner a { get; set; } public AbstractCardPartner b { get; set; } public AbstractMedia(AbstractCardPartner a,AbstractCardPartner b) { this.a = a; this.b = b; } public abstract void aWin(int count); public abstract void bWin(int count); } public class MediatorPater : AbstractMedia { public MediatorPater(AbstractCardPartner a, AbstractCardPartner b) : base(a, b) { } public override void aWin(int count) { a.money += count; b.money -= count; } public override void bWin(int count) { a.money -= count; b.money += count; } } static void Main(string[] args) { AbstractCardPartner a = new ParterA(); AbstractCardPartner b = new ParterB(); a.money = 20; b.money = 10; AbstractMedia ab = new MediatorPater(a, b); a.ChangeCount(1, ab); Console.WriteLine("A 现在的钱是:{0}", a.money); Console.WriteLine("B 现在的钱是:{0}", b.money); // B 赢了 b.ChangeCount(2, ab); Console.WriteLine("A 现在的钱是:{0}", a.money);// 应该是15 Console.WriteLine("B 现在的钱是:{0}", b.money); // 应该是25 Console.Read(); }
好处:
简化了对象之间的关系,将系统的各个对象之间的相互关系进行封装,将各个同事类解耦,使得系统变为松耦合。
提供系统的灵活性,使得各个同事对象独立而易于复用。
缺点:
中介者模式中,中介者角色承担了较多的责任,所以一旦这个中介者对象出现了问题,整个系统将会受到重大的影响。例如,QQ游戏中计算欢乐豆的程序出错了,这样会造成重大的影响
新增加一个同事类时,不得不去修改抽象中介者类和具体中介者类,此时可以使用观察者模式和状态模式来解决这个问题。
相关文章推荐
- 23种设计模式--中介者模式-Mediator Pattern
- 23种设计模式(17)_行为型_中介者模式(Mediator Pattern)
- 23种设计模式-10.中介者模式(Mediator Pattern)
- 二十四种设计模式:中介者模式(Mediator Pattern)
- Java开发中的23种设计模式之二十二:中介者模式(Mediator)
- 我所理解的设计模式(C++实现)——中介者模式(Mediator Pattern)
- 24种设计模式--中介者模式【Mediator Pattern】
- java设计模式---中介者模式(Mediator pattern)
- java设计模式——中介者模式(Mediator Pattern)
- 设计模式21 - 中介者模式【【Mediator Pattern】
- 23种设计模式之中介者模式(Mediator)
- Java设计模式——中介者模式(Mediator Pattern)
- 设计模式之中介者模式(Mediator Pattern)
- 设计模式之中介者模式(Mediator Pattern)
- 设计模式总结之Mediator Pattern(中介者模式)
- [设计模式] 17 中介者模式 Mediator Pattern
- "围观"设计模式(25)--行为型之中介者模式(Mediator Pattern)
- C#设计模式之十七中介者模式(Mediator Pattern)【行为型】
- 二十.行为型设计模式——Mediator Pattern(中介者模式)
- 设计模式笔记21:中介者模式(Mediator Pattern)