Uml图:
//1.Colleague
//Colleague.java
public interface Colleague {
public void giveMess(String[] mess);
public void receiverMess(String mess);
public void setName(String name);
public String getName();
}
//2.具体同事类
//ColleagueA.java
public class ColleagueA implements Colleague {
ConcreteMediator mediator;
String name;
public ColleagueA(ConcreteMediator mediator) {
this.mediator = mediator;
mediator.registerColleagueA(this);
}
@Override
public String getName() {
return name;
}
@Override
public void giveMess(String[] mess) {
mediator.deliverMess(this, mess);
}
@Override
public void receiverMess(String mess) {
System.out.println(name + "收到信息:");
System.out.println("\t" + mess);
}
@Override
public void setName(String name) {
this.name = name;
}
}
//ColleagueB.java
public class ColleagueB implements Colleague {
ConcreteMediator mediator;
String name;
public ColleagueB(ConcreteMediator mediator) {
this.mediator = mediator;
mediator.registerColleagueB(this);
}
@Override
public String getName() {
return name;
}
@Override
public void giveMess(String[] mess) {
mediator.deliverMess(this, mess);
}
@Override
public void receiverMess(String mess) {
System.out.println(name + "收到信息:");
System.out.println("\t" + mess);
}
@Override
public void setName(String name) {
this.name = name;
}
}
//ColleagueC.java
public class ColleagueC implements Colleague {
ConcreteMediator mediator;
String name;
public ColleagueC(ConcreteMediator mediator) {
this.mediator = mediator;
mediator.registerColleagueC(this);
}
@Override
public String getName() {
return name;
}
@Override
public void giveMess(String[] mess) {
mediator.deliverMess(this, mess);
}
@Override
public void receiverMess(String mess) {
System.out.println(name + "收到信息:");
System.out.println("\t" + mess);
}
@Override
public void setName(String name) {
this.name = name;
}
}
//具体中介者:
ConcreateMediator.java
public class ConcreteMediator {
ColleagueA colleagueA;
ColleagueB colleagueB;
ColleagueC colleagueC;
public void registerColleagueA(ColleagueA colleagueA) {
this.colleagueA = colleagueA;
}
public void registerColleagueB(ColleagueB colleagueB) {
this.colleagueB = colleagueB;
}
public void registerColleagueC(ColleagueC colleagueC) {
this.colleagueC = colleagueC;
}
public void deliverMess(Colleague colleague, String[] mess) {
if (mess.length >= 2) {
if (colleague == colleagueA) {
colleagueB.receiverMess(colleague.getName() + mess[0]);
colleagueC.receiverMess(colleague.getName() + mess[1]);
} else if (colleague == colleagueB) {
colleagueA.receiverMess(colleague.getName() + mess[0]);
colleagueC.receiverMess(colleague.getName() + mess[1]);
} else if (colleague == colleagueC) {
colleagueA.receiverMess(colleague.getName() + mess[0]);
colleagueB.receiverMess(colleague.getName() + mess[1]);
}
}
}
}
//模式使用:
public class Application {
public static void main(String[] args) {
ConcreteMediator mediator =new ConcreteMediator();
ColleagueA colleagueA=new ColleagueA(mediator);
ColleagueB colleagueB=new ColleagueB(mediator);
ColleagueC colleagueC=new ColleagueC(mediator);
colleagueA.setName("A国");
colleagueB.setName("B国");
colleagueC.setName("C国");
String messA[] ={"要求归还100","要求归还500"};
colleagueA.giveMess(messA);
String messB[] ={"要求归还200","要求归还300"};
colleagueB.giveMess(messB);
String messC[] ={"要求归还50","要求归还800"};
colleagueC.giveMess(messC);
}
}