當(dāng)對象之間的交互操作很多且每個對象的行為操作都彼此依賴時,為防止在修改一個對象的行為時,同時涉及修改很多其他對象的行為,可采用中介者模式,來解決緊耦合問題。該模式將對象之間的多對多關(guān)系變成一對多關(guān)系,中介者對象將系統(tǒng)從網(wǎng)狀結(jié)構(gòu)變成以調(diào)停者為中心的星形結(jié)構(gòu),達到降低系統(tǒng)的復(fù)雜性,提高可擴展的作用。
public abstract class Colleague { Mediator mediator; public Colleague(Mediator mediator) { this.mediator = mediator; } public abstract void action();}public class ConcreteColleagueA extends Colleague { public ConcreteColleagueA(Mediator mediator) { super(mediator); } @Override public void action() { System.out.PRintln("ColleagueA do action!"); } public void doPrivateA() { System.out.println("ColleagueA do private!"); }}public class ConcreteColleagueB extends Colleague { public ConcreteColleagueB(Mediator mediator) { super(mediator); } @Override public void action() { System.out.println("ColleagueB do action!"); } public void doPrivateB() { System.out.println("ColleagueB do private!"); }}public abstract class Mediator { protected ConcreteColleagueA concreteColleagueA; protected ConcreteColleagueB concreteColleagueB; public abstract void method(); public void setConcreteColleagueA(ConcreteColleagueA concreteColleagueA) { this.concreteColleagueA = concreteColleagueA; } public void setConcreteColleagueB(ConcreteColleagueB concreteColleagueB) { this.concreteColleagueB = concreteColleagueB; }}public class ConcreteMediator extends Mediator { @Override public void method() { concreteColleagueA.action(); concreteColleagueB.action(); concreteColleagueA.doPrivateA(); concreteColleagueB.doPrivateB(); }}5.中介者模式在Android中的實際應(yīng)用
Android的Activity實際就是一個中介者模式,形形式式的View交互都在Activity中統(tǒng)一執(zhí)行,View之間彼此不交互。
新聞熱點
疑難解答