中介者模式Mediator Pattern
用一个中介对象封装一系列对象交互,使各对象不需要显示地相互作用,从而使耦合松散,可以独立改变他们之间得交互
//通用抽象中介类
public abstract class Mediator{
protected Colleague1 c1;
protected Colleague2 c2;
//实现setter/getter方法把同事类注入,依赖注入
public abstract void doSomething(Colleague colleague);
}
//通用中介类
public class ConcreteMediator{
public void doSomething(){
if(colleague instanceof Colleague1){
super.c2.method2();
}
else{
super.c1.method1();
}
}
}
//抽象同事类
public abstract Colleague(){
protected Mediator mediator;//中介
public Colleague(Mediator mediator){
this.mediator=mediator;
}
}
//同事类1
public class Colleague1(){
public Colleague1(Mediator mediator){super(mediator);}
public method1(){}//自己的业务逻辑
public depMethod1(){
//内部逻辑
super.mediator.doSomething(this);//交互业务
}//中介处理
}
public class Colleague2(){
public Colleague2(Mediator mediator){super(mediator);}
public method2(){}//自己的业务逻辑
public depMethod1(){
//内部逻辑
super.mediator.doSomething(this);//交互业务
}//中介处理
}
中介者模式减少了实体类之间的耦合,使得可以独立修改实体类之间的逻辑关系,减少类间依赖,降低类间耦合。不过中介者控制了集中化,将实体类之间交互的复杂性变为了中介者的复杂性。