// 抽象同事类public class Colleague { protected Mediator mediator; public Colleague(Mediator mediator){ this.mediator=mediator; }}// 具体同事1public class ConcreteColleague1 extends Colleague { public ConcreteColleague1(Mediator mediator) { super(mediator); // TODO Auto-generated constructor stub } public void Send(String message){// 中介者发送消息 mediator.Send(message, this); }// 给中介调用的,同事2来消息就通知同事1 public void Notify(String message){ System.out.println("同事1得到信息:"+message); }}// 具体同事2public class ConcreteColleague2 extends Colleague { public ConcreteColleague2(Mediator mediator) { super(mediator); // TODO Auto-generated constructor stub } public void Send(String message){// 中介者发送消息 mediator.Send(message, this); }// 给中介调用的,同事1来消息就通知同事2 public void Notify(String message){ System.out.println("同事2得到信息:"+message); }}// 抽象中介者类public abstract class Mediator { public abstract void Send(String message,Colleague colleague);}// 具体中介者public class ConcreteMediator extends Mediator{ // 同事1 private ConcreteColleague1 colleague1; // 同事2 private ConcreteColleague2 colleague2; public void setColleague1(ConcreteColleague1 colleague1) { this.colleague1 = colleague1; } public void setColleague2(ConcreteColleague2 colleague2) { this.colleague2 = colleague2; } @Override public void Send(String message, Colleague colleague) {// 根据对象做出选择判断,通知对象 if(colleague == colleague1){ colleague2.Notify(message); }else{ colleague1.Notify(message); } }}public class Test { public static void main(String[] args) { // 中介者 ConcreteMediator mediator =new ConcreteMediator(); // 同事1 同事2 ConcreteColleague1 c1 = new ConcreteColleague1(mediator); ConcreteColleague2 c2 = new ConcreteColleague2(mediator); mediator.setColleague1(c1); mediator.setColleague2(c2); // 通过中介者发送消息 c1.Send("吃过饭了吗?"); c2.Send("没有呢,你打算请客?"); }}