星空网 > 软件开发 > ASP.net

《大话设计模式》学习笔记21:中介者模式

  《大话设计模式》学习笔记21:中介者模式

同事间接收消息示例:

  《大话设计模式》学习笔记21:中介者模式

1.Mediator:

  public abstract class Mediator  {    public abstract void Send(string message, Colleague colleague);  }

2.Colleague:

  public abstract class Colleague  {    protected Mediator mediator;        public Colleague(Mediator mediator)    {      this.mediator = mediator;    }  }

3.ConcreteMediator:

  public class ConcreteMediator:Mediator  {    //需要了解所有的具体对象:    public ConcreteColleague1 colleague1 { private get; set; }    public ConcreteColleague2 colleague2 { private get; set; }    public override void Send(string message, Colleague colleague)    {      if(colleague==colleague1)      {        colleague2.Notify(message);      }      else      {        colleague1.Notify(message);      }    }  }

4.ConcreteColleague:

  public class ConcreteColleague1:Colleague  {    public ConcreteColleague1(Mediator mediator)      : base(mediator)    {    }    public void Send(string message)    {      mediator.Send(message, this);    }    public void Notify(string message)    {      Console.WriteLine("同事1得到信息:" + message);    }  }

  public class ConcreteColleague2 : Colleague  {    public ConcreteColleague2(Mediator mediator)      : base(mediator)    {    }    public void Send(string message)    {      mediator.Send(message, this);    }    public void Notify(string message)    {      Console.WriteLine("同事2得到信息:" + message);    }  }

5.客户端代码:

  class Program  {    static void Main(string[] args)    {      ConcreteMediator mediator = new ConcreteMediator();      ConcreteColleague1 colleague1 = new ConcreteColleague1(mediator);      ConcreteColleague2 colleague2 = new ConcreteColleague2(mediator);      mediator.colleague1 = colleague1;      mediator.colleague2 = colleague2;      colleague1.Send("吃过饭了吗?");      colleague2.Send("没呢,你打算请客?");    }  }

  

  优点:

    1.Mediator的出现减少了各个Colleague的耦合,使得可以独立地改变和复用各个Colleague和Mediator;

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

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

 

  中介者模式一般应用于一组对象以定义良好但是复杂的方式进行通信的场合,以及想定制一个分布在多个类中的行为而又不想生成太多子类的场合。

 

  中介者模式很容易在系统中应用,也很容易在系统中误用。当系统出现了“多对多”交互复杂的对象群时,不要急于使用中介者模式,而要先反思你的系统在设计上是不是合理。

 




原标题:《大话设计模式》学习笔记21:中介者模式

关键词:设计模式

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

VAT基础知识②标准税率&低税率,到底怎么选?:https://www.ikjzd.com/articles/97928
图文详解:JUMIA如何添加收款方式?:https://www.ikjzd.com/articles/97929
一周内2个柜子被查!出货前这些准备一定要做好!:https://www.ikjzd.com/articles/97933
亚马逊FBA头程物流如何选择?:https://www.ikjzd.com/articles/97934
如何快速解决跨境电商需要的产品认证?:https://www.ikjzd.com/articles/97935
Prime Day的 “三阶段打法”,如何引爆超10亿销售额?:https://www.ikjzd.com/articles/97936
37号文今后是否会更新?一文详解关键信息 :https://www.kjdsnews.com/a/1836441.html
探讨内地人开设香港账户的可行性 :https://www.kjdsnews.com/a/1836442.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流