那些你要知道的设计模式之-中介者

那些你要知道的设计模式之-中介者_第1张图片

一.定义

用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互,属于行为性模式

二.作用

  • 降低类于类之间的耦合
  • 易于维护

三.案例

中介者模式比较简单,在实际项目开发中经常会被用到,先来一个简单的例子,ConcreteColleague代表具体同事类,具备具体的行为,并和中介者关联。

//具体的同事类
public class ConcreteColleague {

    private String name;

    private ConcreteMediator mediator;

    //通过构造函数和中介者关联
    public ConcreteColleague(String name, ConcreteMediator mediator) {
        this.name = name;
        this.mediator = mediator;
    }

    public void doSomething() {
        mediator.doSomething();
    }

    //行为
    public void say(){
        System.out.println("我叫"+name);
    }
}

在定义一个ConcreteMediator中介者,帮助同事类处理各种行为

//中介者
public class ConcreteMediator {

   private  ConcreteColleague colleague;

    public void setColleague(ConcreteColleague colleague) {
        this.colleague = colleague;
    }

    public void doSomething(){
        colleague.say();
    }
}

实际应用如下:

   public static void main(String[] args) {
        //定义中介者
        ConcreteMediator mediator =  new ConcreteMediator();
        //定义同事类
        ConcreteColleague colleague = new ConcreteColleague("小许",mediator);
        //中介者关系他的同事类
        mediator.setColleague(colleague);
        //帮助同事类处理行为
        mediator.doSomething();

    }

看看执行结果:
我叫小许

四.总结

  • 使用场景
    当一个类和多个类有耦合关系的时候,为防止修改一个类,倒置多个类产生影响。可使用中介者模式
  • 优点
    中介者就是来减少类间的依赖关系,转多对多,为一对一
  • 缺点
    中介者就像一个水缸,当一个装不下的时候,就要多个,太多了就会泛滥。同事类越多,中介者也就越复杂,所以不要滥用,要适度。

你可能感兴趣的:(那些你要知道的设计模式之-中介者)