[23种设计模式汇总]行为型模式_中介者模式

[23种设计模式汇总]行为型模式_中介者模式

ID:40313989

大小:105.50 KB

页数:5页

时间:2019-07-30

[23种设计模式汇总]行为型模式_中介者模式_第1页
[23种设计模式汇总]行为型模式_中介者模式_第2页
[23种设计模式汇总]行为型模式_中介者模式_第3页
[23种设计模式汇总]行为型模式_中介者模式_第4页
[23种设计模式汇总]行为型模式_中介者模式_第5页
资源描述:

《[23种设计模式汇总]行为型模式_中介者模式》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、中介者模式中介者模式定义:  中介者模式又叫做调停者模式,其定义为:用一个中介对象封装一系列对象的交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立的改变它们之间的交互。中介者模式的优点:  中介者模式的优点是减少了类之间的依赖,使原有一对多的依赖变成了一对一的依赖,同事类只依赖中介者,降低了类之间的耦合。中介者模式的缺点:  中介者模式的缺点是中介者会膨胀的很大,而且逻辑复杂,同事类越多,中介者逻辑越复杂。中介者模式的使用场景:  中介者模式适合于多个对象之间紧密耦合的情况

2、(类图出现了蜘蛛网结构)。中介者模式的通用类图:Mediator(抽象中介者角色):定义了中介者统一的接口,用于各同事角色直接的通信。ConcreteMediator(具体中介者角色):协调各同事角色实现协作行为,它依赖各个同事角色。Colleague(同事角色):每一个同事角色都知道中介者角色的存在,而且与其他的同事角色通信的时候,一定会通过中介者角色协调。每个同事类的行为分为两种:第一种是同事角色本身的行为,不与其他同事角色或中介者交互的方法,这种方法叫做自发行为(Self-Method);第

3、二种是必须依赖中介者才能完成的行为,叫做依赖方法(Dep-Method)。中介模式通用代码:抽象中介者角色:publicabstractclassMediator{/*中介者依赖各个同事类*/privateConcreteColleague1colleague1=null;privateConcreteColleague2colleague2=null;publicMediator(){}publicConcreteColleague1getColleague1(){returncolleague

4、1;}publicvoidsetColleague1(ConcreteColleague1colleague1){this.colleague1=colleague1;}publicConcreteColleague2getColleague2(){returncolleague2;}publicvoidsetColleague2(ConcreteColleague2colleague2){this.colleague2=colleague2;}/*定义中介者统一接口,用于协调同事角色之间的通信*

5、/abstractpublicvoiddoSomething1();abstractpublicvoiddoSomething2();}具体中介者角色:publicclassConcreteMediatorextendsMediator{/*中介者对象封装了一系列对象的交互,而且可以独立改变他们之间的交互*/@OverridepublicvoiddoSomething1(){super.getColleague1().selfMethod1();super.getColleague2().self

6、Method1();}/*中介者对象封装了一系列对象的交互,而且可以独立改变他们之间的交互*/@OverridepublicvoiddoSomething2(){super.getColleague1().selfMethod2();super.getColleague2().selfMethod2();}}同事类:publicclassConcreteColleague1{privateMediatormediator=null;publicConcreteColleague1(Mediator

7、mediator){this.mediator=mediator;}/*自发行为1*/publicvoidselfMethod1(){System.out.println("colleague1selfMethod1invoke!");}/*自发行为2*/publicvoidselfMethod2(){System.out.println("colleague1selfMethod2invoke!");}/*依赖行为*/publicvoiddepMethod(){this.mediator.doS

8、omething1();}}publicclassConcreteColleague2{privateMediatormediator=null;publicConcreteColleague2(Mediatormediator){this.mediator=mediator;}publicvoidselfMethod1(){System.out.println("colleague2selfMethod1invoke!");}publicvoidselfMethod2(){Sys

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。