预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

中介者模式 中介者模式定义:中介者模式又叫做调停者模式,其定义为:用一个中介对象封装一系列对象的交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立的改变它们之间的交互。中介者模式的优点:中介者模式的优点是减少了类之间的依赖,使原有一对多的依赖变成了一对一的依赖,同事类只依赖中介者,降低了类之间的耦合。中介者模式的缺点:中介者模式的缺点是中介者会膨胀的很大,而且逻辑复杂,同事类越多,中介者逻辑越复杂。中介者模式的使用场景:中介者模式适合于多个对象之间紧密耦合的情况(类图出现了蜘蛛网结构)。中介者模式的通用类图:Mediator(抽象中介者角色):定义了中介者统一的接口,用于各同事角色直接的通信。ConcreteMediator(具体中介者角色):协调各同事角色实现协作行为,它依赖各个同事角色。Colleague(同事角色):每一个同事角色都知道中介者角色的存在,而且与其他的同事角色通信的时候,一定会通过中介者角色协调。每个同事类的行为分为两种:第一种是同事角色本身的行为,不与其他同事角色或中介者交互的方法,这种方法叫做自发行为(Self-Method);第二种是必须依赖中介者才能完成的行为,叫做依赖方法(Dep-Method)。中介模式通用代码:抽象中介者角色: publicabstractclassMediator { /*中介者依赖各个同事类*/ privateConcreteColleague1colleague1=null; privateConcreteColleague2colleague2=null; publicMediator() { } publicConcreteColleague1getColleague1() { returncolleague1; } publicvoidsetColleague1(ConcreteColleague1colleague1) { this.colleague1=colleague1; } publicConcreteColleague2getColleague2() { returncolleague2; } publicvoidsetColleague2(ConcreteColleague2colleague2) { this.colleague2=colleague2; } /*定义中介者统一接口,用于协调同事角色之间的通信*/ abstractpublicvoiddoSomething1(); abstractpublicvoiddoSomething2(); } 具体中介者角色: publicclassConcreteMediatorextendsMediator { /*中介者对象封装了一系列对象的交互,而且可以独立改变他们之间的交互*/ @Override publicvoiddoSomething1() { super.getColleague1().selfMethod1(); super.getColleague2().selfMethod1(); } /*中介者对象封装了一系列对象的交互,而且可以独立改变他们之间的交互*/ @Override publicvoiddoSomething2() { super.getColleague1().selfMethod2(); super.getColleague2().selfMethod2(); } } 同事类: publicclassConcreteColleague1 { privateMediatormediator=null; publicConcreteColleague1(Mediatormediator) { this.mediator=mediator; } /*自发行为1*/ publicvoidselfMethod1() { System.out.println("colleague1selfMethod1invoke!"); } /*自发行为2*/ publicvoidselfMethod2() { System.out.println("colleague1selfMethod2invoke!"); } /*依赖行为*/ publicvoiddepMethod() { this.mediator.doSomething1(); } } publicclassConcreteColleague2 { privateMediatormediator=null; publicConcreteColleague2(Mediatormediator) { this.mediator=mediator; } publicvoidselfM