abstract class Mediator { abstract public void send(String name , Colleague colleague); }
public class ConcreteMediator extends Mediator { ConcreteColleague1 colleague1; ConcreteColleague2 colleague2; public void setConcreteColleague1(ConcreteColleague1 colleague1) { this.colleague1 = colleague1; } public void setConcreteColleague2(ConcreteColleague2 colleague2) { this.colleague2 = colleague2; } public void send(String message,Colleague colleague) { if (colleague==colleague1) { colleague2.notify(message); } else if (colleague==colleague2) { colleague1.notify(message); } } }
abstract class Colleague { protected Mediator mediator; public Colleague(Mediator mediator) { this.mediator = mediator; } }
public 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("ConcreteColleague1は" + message + "を受け取りました"); } }
public 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("ConcreteColleague2は" + message + "を受け取りました"); } }
public class Client { public static void main(String[] args) { ConcreteMediator mediator = new ConcreteMediator(); ConcreteColleague1 colleague1 = new ConcreteColleague1(mediator); ConcreteColleague2 colleague2 = new ConcreteColleague2(mediator); mediator.setConcreteColleague1(colleague1); mediator.setConcreteColleague2(colleague2); colleague1.send("Hello World"); colleague2.send("こんにちわ 世界"); } }
C:\JavaHello\Mediator>java Client ConcreteColleague2はHello Worldを受け取りました ConcreteColleague1はこんにちわ 世界を受け取りました C:\JavaHello\Mediator>