Mediator Design Pattern

意图:一组对象定义良好,但是以复杂的方式进行通讯;一个对象引用很多其他对象,依赖关系复杂;


减少了子类的生成;使得对象的通信集中化;把各个Colleague解耦;


参与者:

1)Mediator:中介;

定义一个接口用于个同事Colleague之间的通信;

public abstract class Mediator

{

public   abstract void Send(string message, Colleague colleague);

}

2)ConcreteMediator:

定义各个同事之间的通信方式;维护各个同事

public class ConcreteMediator : Mediator

{

   public Colleague colleague1;

  public Colleague colleague2;

  public override void Send(string message, Colleague colleague)

{

   if (colleague is colleague1)

   {

       colleague2.Notify(message);

    }

    else

   {

      colleague2.Notify(message);

    }

}

}


3)同事Colleague;

每个同事类都知道他的中介对象;当与其他同事通信时,必须通过中介来进行;

public class Colleague

{

    private Mediator _mediator;

   public Colleague(Mediator mediator) {_mediator = mediator;}

}


public class ConcreteColleague : Colleague 

{

  public class ConcreteColleague(Mediator mediator): base(mediator) {}

  public void Send(string message) 

 {

    _ mediator.Send(message, this);

}


public void Notify(string message) 

{

  Console.WriteLine("Colleague get the message from" + message);

}

}

4)调用

ConcreteMediator cm = new ConcreteMediator();

ConcreteColleague colleague1 = new ConcreteColleague(cm):

ConcreteColleague colleague2 = new ConcreteColleague(cm):

cm.collgue1 = colleuge1;

cm.colleague2 = colleague2;


colleague1.Send("how are you?");

colleague2.Send("fiine,thanks");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值