1 //抽象同事類 2 abstract class Colleague{ 3 private Mediator mediator; 4 public Colleague(Mediator mediator){ 5 this.mediator = mediator; 6 } 7 //取值方法 8 public Mediator getMediator(){ 9 return mediator; 10 } 11 //行動方法,由子類實現,一個同事對象在知道其餘對象有變化時,會執行這個操做 12 public abstract void action(); 13 //示意性業務方法,調用此方法能夠改變對象的內部狀態 14 public void change(){ 15 mediator.colleagueChanged(this); 16 } 17 } 18 //具體同事類 19 class Colleague1 extends Colleague{ 20 public Colleague1(Mediator m){ 21 super(m); 22 } 23 @Override 24 public void action() { 25 System.out.println("This is an action from Colleague 1"); 26 } 27 28 } 29 30 class Colleague2 extends Colleague{ 31 public Colleague2(Mediator m){ 32 super(m); 33 } 34 @Override 35 public void action() { 36 System.out.println("This is an action from Colleague 2"); 37 } 38 39 } 40 41 //抽象調停者 42 abstract class Mediator{ 43 public abstract void colleagueChanged(Colleague e); 44 45 public static void main(String[] args) { 46 ConcreteMediator mediator = new ConcreteMediator(); 47 mediator.createConcreteMediator(); 48 Colleague c1 = new Colleague1(mediator); 49 Colleague c2 = new Colleague2(mediator); 50 mediator.colleagueChanged(c1); 51 } 52 } 53 54 //具體調停者 55 class ConcreteMediator extends Mediator{ 56 private Colleague1 colleague1; 57 private Colleague2 colleague2; 58 //事件方法的具體實現 59 @Override 60 public void colleagueChanged(Colleague e) { 61 colleague1.action(); 62 colleague2.action(); 63 } 64 //工廠方法,建立同事對象 65 public void createConcreteMediator(){ 66 colleague1 = new Colleague1(this); 67 colleague2 = new Colleague2(this); 68 } 69 //取值方法 70 public Colleague1 getColleague1(){ 71 return colleague1; 72 } 73 public Colleague2 getColleague2(){ 74 return colleague2; 75 } 76 }