設計模式------中介者模式
阿新 • • 發佈:2017-08-16
而且 作用 dos some 自己的 eth pan 沒有 self
中介者模式定義
用一個中介對象封裝一系列的對象交互,中介者使各對象不需要顯示地相互作用,從而使其耦合松散,而且可以獨立地改變它們之間的交互。
Mediator抽象中介者角色
抽象中介者角色定義統一的接口,用於各同事角色之間的通信。
public abstract class Mediator{ //定義同事類 protected ConcreteColleague1 c1; protected ConcreteColleague2 c2; //通過getter/setter方法把同事類註入進來 public ConcreteColleague1 getC1(){return c1; } public void setC1(ConcreteColleague1 c1){ this.c1 = c1; } public ConcreteColleague2 getC2(){ return c2; } public void setC2(ConcreteColleague2 c2){ this.c2 = c2; } //中介者模式的業務邏輯 public abstract void doSomething1(); publicabstract void doSomething2(); }
Concrete Mediator 具體中介者角色
具體中介者角色通過協調各同事實現協作行為,因此它必須依賴於各個同事角色
public class ConcreteMediator extends Mediator{ @Override public void doSomething1(){ //調用同事類的方法,只要是public方法都可以調用 super.c1.selfMethod1(); super.c2.selfMethod2(); } @Overridepublic void doSomething2(){ //調用同事類的方法,只要是public方法都可以調用 super.c1.selfMethod1(); super.c2.selfMethod2(); } }
Colleague同事角色
每一個同事角色都知道中介者角色,而且與其他的同事角色通信的時候,一定要通過中介者角色協作。每個同事類的行為分為兩種:一種是同事本身的行為,比如改變對象本身的狀態,處理自己的行為等,這種方法叫做自發行為,與其他的同事類或中介者沒有任何的依賴;第二種是必須依賴中介者才能完成的行為,叫做依賴方法。
抽象同事類
public abstract class Colleague{ protected Mediator mediator; public Colleague(Mediator mediator){ this.mediator = mediator; } }
具體同事類
public class ConcreteColleague1 extends Colleague{ //通過構造函數傳遞中介者 public ConcreteColleague1(Mediator mediator){ super(mediator); } //自有方法 self-method public void depMethod1(){ //處理自己的業務邏輯 } //依賴方法 dep-method public void depMethod2(){ //處理自己的業務邏輯 //自己不能處理的業務邏輯,委托給中介者處理 super.mediator.doSomething2(); } } public class ConcreteColleague2 extends Colleague{ //通過構造函數傳遞中介者 public ConcreteColleague2(Mediator mediator){ super(mediator); } //自有方法 self-method public void depMethod1(){ //處理自己的業務邏輯 } //依賴方法 dep-method public void depMethod2(){ //處理自己的業務邏輯 //自己不能處理的業務邏輯,委托給中介者處理 super.mediator.doSomething2(); } }
中介者模式的缺點:中介者類會膨脹得很大,而且邏輯很復雜。
設計模式------中介者模式