首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

设计模式-中介者方式

2013-12-13 
设计模式-中介者模式在多个对象依赖的情况下,通过加入终结者角色,取消了多个对象的关联或依赖关系,减少了

设计模式-中介者模式

在多个对象依赖的情况下,通过加入终结者角色,取消了多个对象的关联或依赖关系,减少了对象的耦合性。Define an object that encapsulates how a set of objects interact. Mediator promotes loosecoupling by keeping objects from referring to each other explicitly, and it lets you varytheir interaction independently.用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式的组成:(1)Mediator 抽象中介者角色抽象中介者角色定义统一的接口,用于各同事角色之间的通信。(2)Concrete Mediator 具体中介者角色具体中介者角色通过协调各同事角色实现协作行为,因此它必须依赖于各个同事角色。(3)Colleague 同事角色。每一个同事角色都知道中介者角色,而且与其他同事角色通信的时候,一定要通过中介者角色协作。每个同事类的行为分为两种:一种是同事本身的行为,比如改变对象本身的状态,处理自己的行为等,这种方法叫做自发行为(Self-Method),与其他的同事类或中介者没有任何的依赖;第二种是必须依赖中介者才能完成的行为,叫做依赖方法(Dep-Method)。public abstract class Mediator {protected ConcreteColleague1 c1;protected ConcreteColleague2 c2;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 doSomethings1();public abstract void doSomethings2();}public class ConcreteMediator extends Mediator {@Overridepublic void doSomethings1() {}@Overridepublic void doSomethings2() {}}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);}public void selfMethod1() {}public void depMethod1() {super.mediator.doSomethings1();}}public class ConcreteColleague2 extends Colleague {public ConcreteColleague2(Mediator mediator) {super(mediator);}public void selfMethod2() {}public void depMethods() {super.mediator.doSomethings2();}}中介者模式的应用场景中介者模式简单,但是简单不代表容易使用,很容易被误用。在面向对象编程中,对象和对象之间必然会有依赖关系,如果某个类和其他类没有任何相互依赖的关系,那这个类就是一个“孤岛”,在项目中就没有存在的必要了。中介者模式适用于多个对象之间紧密耦合的情况,紧密耦合的标准是:在类图中出现了蜘蛛网状的结构。在这中情况下一定考虑使用中介者模式,这有利于把蜘蛛网树立为星型结构。 中介者模式的实际应用中介者模式也叫做调停者模式。一个对象要和N多个对象交流,就像对象间的战争,很混乱。这时,需要加入一个中心,所有的类都和中心交流。中心说怎么处理就怎么处理。

热点排行