中介者模式是行为型模式的一种。系统中各个模块之间都相互交互,那系统的复杂度就很高,一个模块出了问题,其他模块也要修改。中介者模式可以将模块之间的交互转为跟中间者的交互,降低系统复杂度。
public interface Mediator {
void say(String message,Country country);
}
public class WTO implements Mediator{
private USA usa;
private China china;
public WTO(){
}
public void setUSA(USA usa){
this.usa = usa;
}
public void setChina(China china){
this.china = china;
}
@Override
public void say(String message,Country country) {
if(country == usa){
china.getMessage(message);
}else if(country == china){
usa.getMessage(message);
}
}
}
public abstract class Country {
private Mediator mediator;
public Country(Mediator mediator){
this.mediator = mediator;
}
public Country(){}
public void sendMessage(String message){
mediator.say(message,this);
}
public void getMessage(String message){
System.out.println("其他国家得到消息:"+message);
}
}
public class China extends Country{
public China(Mediator mediator){
super(mediator);
}
@Override
public void sendMessage(String message) {
System.out.println("china say:"+message);
super.sendMessage(message);
}
}
public class USA extends Country{
public USA(Mediator mediator){
super(mediator);
}
@Override
public void sendMessage(String message) {
System.out.println("usa say:"+message);
super.sendMessage(message);
}
}
public class Client {
public static void main(String[] args) {
WTO wto = new WTO();
China china = new China(wto);
USA usa = new USA(wto);
wto.setChina(china);
wto.setUSA(usa);
china.sendMessage("aaa");
}
}