那些你要知道的设计模式之-中介者
2018-04-22 本文已影响4人
小巨人Vea
一.定义
用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互,属于行为性模式
二.作用
- 降低类于类之间的耦合
- 易于维护
三.案例
中介者模式比较简单,在实际项目开发中经常会被用到,先来一个简单的例子,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();
}
看看执行结果:
我叫小许
四.总结
- 使用场景
当一个类和多个类有耦合关系的时候,为防止修改一个类,倒置多个类产生影响。可使用中介者模式 - 优点
中介者就是来减少类间的依赖关系,转多对多,为一对一 - 缺点
中介者就像一个水缸,当一个装不下的时候,就要多个,太多了就会泛滥。同事类越多,中介者也就越复杂,所以不要滥用,要适度。