用一个‘中介者’,封装很多对象之间的交互(对象之间的关系为复杂的网状结构)。耦合松离
使用该模式之后,以中介者为中心,的星状结构。
有2个类,每个类中都有一个数字,保持,B中数字永远是A的100倍。 AB类就为同事类。
抽象中介者:
abstract class AbstractMediator{
private AbstractColleague A;
private AbstractColleague B;
public AbstractMediator(AbstractColleague a, AbstractColleague b){
A = a; B=b;
}
public abstract void effectB(); //影响A类
public abstract void effectA(); //影响B类
}
public Mediator extends AbstractMediator{
public Mediator(AbstractColleague a,AbstractColleague b){
super(a,b);
}
public void effectB(){
int number = A.getNumber();
B.setNumber(number*100);
}
public void effectA(){
int number = B.getNumber();
A.setNumber(number/100);
}
}
abstract class AbstractColleague{
private int number;
getter,setter
//重载 setter方法
public abstract void setNumber(int number,AbstractMediator am);
}
class ColleagueA extends AbstractColleague{
public void setNumber(int number,AbstractMediator am){
this.number = number;
am.effectB();
}
}
class ColleagueB extends AbstractColleague{
public void setNumber(int number,AbstractMediator am){
this.number = number;
am.effectA();
}
}
客户端:
main(){
AbstractColleague A = new ColleagueA();
AbstractColleague B = new ColleagueB();
//中介者
AbstractMediator mediator = new Mediator(A,B);
A.setNumber(100,mediator);
B.setNumber(1000,mediator);
}
一般同事间是网格结构关系才使用。