public class MediatorTest1 { public static void main(String[] args) { ConcreteMediator m = new ConcreteMediator(); ConcreteColleague1 c1 = new ConcreteColleague1(m); ConcreteColleague2 c2 = new ConcreteColleague2(m); m.setColleague1(c1); m.setColleague2(c2); c1.Send("饭吃过了吗?"); c2.Send("没有呢,你打算请客"); System.out.println(); } } abstract class Mediator { abstract public void Send(String message,Colleague colleague); } abstract class Colleague { protected Mediator mediator; public Colleague(Mediator mediator) { this.mediator= mediator; } } class ConcreteMediator extends Mediator { private ConcreteColleague1 colleague1; private ConcreteColleague2 colleague2; public void setColleague1(ConcreteColleague1 colleague1) { this.colleague1 = colleague1; } public void setColleague2(ConcreteColleague2 colleague2) { this.colleague2 = colleague2; } public void Send(String message,Colleague colleague) { if(colleague == colleague1) { colleague2.Notify(message); } else { colleague1.Notify(message); } } } class ConcreteColleague1 extends Colleague { public ConcreteColleague1(Mediator mediator) { super(mediator); } public void Send(String message) { mediator.Send(message,this); } public void Notify(String message) { System.out.println("同事1得到信息: "+message); } } class ConcreteColleague2 extends Colleague { public ConcreteColleague2(Mediator mediator) { super(mediator); } public void Send(String message) { mediator.Send(message,this); } public void Notify(String message) { System.out.println("同事2得到信息: "+message); } } public class MediatorTest2 { public static void main(String[] args) { UnitedNationSecurityCouncil UNSC = new UnitedNationSecurityCouncil(); USA c1 = new USA(UNSC); Iraq c2 = new Iraq(UNSC); UNSC.setColleague1(c1); UNSC.setColleague2(c2); c1.Declare("不准研制核武器,否则要发动战争"); c2.Declare("我们没有核武器,也不怕侵略"); System.out.println(); } } abstract class UnitedNations { abstract public void Declare(String message,Country colleague); } abstract class Country { protected UnitedNations mediator; public Country(UnitedNations mediator) { this.mediator = mediator; } } class USA extends Country { public USA(UnitedNations mediator) { super(mediator); } public void Declare(String message) { mediator.Declare(message,this); } public void GetMessage(String message) { System.out.println("美国获得对方性息:"+ message); } } class Iraq extends Country { public Iraq(UnitedNations mediator) { super(mediator); } public void Declare(String message) { mediator.Declare(message,this); } public void GetMessage(String message) { System.out.println("伊拉克获得对方性息:"+ message); } } class UnitedNationSecurityCouncil extends UnitedNations { public USA colleague1; public Iraq colleague2; public void setColleague1(USA colleague1) { this.colleague1 = colleague1; } public void setColleague2(Iraq colleague2) { this.colleague2 = colleague2; } public void Declare(String message,Country colleague) { if(colleague == colleague1) { colleague2.GetMessage(message); } else { colleague1.GetMessage(message); } } }