美文网首页
设计模式 - 中介者模式

设计模式 - 中介者模式

作者: Mitchell | 来源:发表于2016-09-04 15:50 被阅读68次
  • 简介
    用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
  • 中介模式的缺点
    • 中介者模式很容易在系统中应用,也很容易在系统中误用。当系统出现了‘多对多’交互复杂的对象群,不能急于使用中介者模式。
  • 中介者模式的优点
    • 具体中介者类控制了集中化,于是就把交互复杂性变味了中介者的复杂性,这就使得中介者会变得比任何一个中介类都复杂。
  • 实例:
//中介基类
abstract class Mediator
{
    public abstract void Send(string message,Colleague colleague);
}
//同事类
abstract class Colleague
{
    protected Mediator mediator;
    public Colleague(Mediator mediator){
        this.mediator = mediator;
    }
}
class ConcreteMediator : Mediator
{
    private ConcreteColleague1 cooleague1;
    private ConcreteColleague2 cooleague2;

    public ConcreteColleague1 Colleague1
    {
        set{ Colleague1 = value; }
    }
    public ConcreteColleague2 Colleague2
    {
        set{ Colleague2 = value; }
    }
    public override void Send(stirng message,Colleague colleague){
        if(colleague == Colleague1)
        {
            Colleague1.Notify(message);
        }else{
            Colleague2.Notify(message);
        }
    }
}
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);
    }
}
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);
    }
}
static void Main(string[] args){
    //创建中介类
    ConcreteMediator M = new ConcreteMediator();
    //
    ConcreteColleague1 c1 = new ConcreteColleague1(m);
    ConcreteColleague2 c1 = new ConcreteColleague2(m);
    m.Colleague1 = c1;
    m.Colleague2 = c2;
    c1.Send("message1");
    c2.Send("message2");
    Console.Read();
}

相关文章

网友评论

      本文标题:设计模式 - 中介者模式

      本文链接:https://www.haomeiwen.com/subject/domlettx.html