public static abstract class Mediator{ protected Colleague1 colleague1; protected Colleague2 colleague2; public Colleague1 getColleague1() { return colleague1; } public void setColleague1(Colleague1 colleague1) { this.colleague1 = colleague1; } public Colleague2 getColleague2() { return colleague2; } public void setColleague2(Colleague2 colleague2) { this.colleague2 = colleague2; } public abstract void doSomething(); } public static class ConcrectMediator extends Mediator{ @Override public void doSomething() { //中介者中一般只调用自己的方法 colleague1.doSomethingSelf(); colleague2.doSomethingSelf(); } } public static abstract class Colleague{ protected Mediator mediator; public Colleague(Mediator mediator){ this.mediator = mediator; } } public static class Colleague1 extends Colleague{ public Colleague1(Mediator mediator) { super(mediator); } public void doSomethingSelf(){ System.out.println("c1 doSomethingSelf"); } public void doSomethingMedia(){ this.mediator.doSomething(); } } public static class Colleague2 extends Colleague{ public Colleague2(Mediator mediator) { super(mediator); } public void doSomethingSelf(){ System.out.println("c2 doSomethingSelf"); } public void doSomethingMedia(){ this.mediator.doSomething(); } } public static void main(String[] args){ ConcrectMediator mediator = new ConcrectMediator(); Colleague1 c1 = new Colleague1(mediator); Colleague2 c2 = new Colleague2(mediator); mediator.setColleague1(c1); mediator.setColleague2(c2); c1.doSomethingSelf(); c1.doSomethingMedia(); c2.doSomethingSelf(); c2.doSomethingMedia(); }
优点:
减少类的依赖,把一对多的依赖变成一对一,降低了类的耦合。
缺点:
中介者会很复杂。
使用场景:
看多个对象的耦合程度:在类图中出现了蜘蛛网的结构,考虑使用中介者模式来优化类图。
原文:http://www.cnblogs.com/wangqian-easy/p/4866809.html