大话设计—中介者模式

最近一直在总结设计模式,对于代理模式、中介者模式、外观模式三者甚是难辨。

代理模式:为其他对象提供一种代理以控制对这个对象的访问。【结构型】

外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一个子系统更加容易使用。【行为型】

二者区别:

代理的客户对象无法直接访问目标对象,代理对象提供对单独目标对象的访问控制,而外观模式的客户对象可以直接访问子系统中的各个对象,但通常由外观对象提供对子系统个元件功能的简化的共同层次的调用接口。  

下面重点介绍一下中介者模式:

1.定义:

中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显示地相互吸引,从而使其耦合松散,而且可以独立地改变他们之间的交互。【行为型】

2.个人理解:

其实这个就像是一个平台。比方说,腾讯QQ,不论是QQ游戏还是QQ群,它们都是充当一个中间平台,QQ用户可以登录这个中间平台与其他QQ用户进行交流,如果没有这些中间平台,我们如果想与朋友进行聊天的话,可能就需要当面才可以了。电话、短信也同样是一个中间平台,有了这个中间平台,每个用户都不要直接依赖与其他用户,只需要依赖这个中间平台就可以了,一切操作都由中间平台去分发。

如图所示:

               

说明:中介者模式设计两个具体对象,一个是用户类,另一个是中介者类,根据针对接口编程原则,则需要把这两类角色进行抽象,所以中介者模式中就有了4类角色,它们分别是:抽象中介者角色,具体中介者角色、抽象同事类和具体同事类。中介者类是起到协调各个对象的作用,则抽象中介者角色中则需要保存各个对象的引用。

3.深入了解中介者模式

优点:

Mediator的出现减少了各个colleague的耦合,使得可以独立的改变和复用各个colleague类和Mediator。

  

通过这两张图可以清楚的看到对象间的低耦合。而且它提高了系统的灵活性,提高了代码的复用性。

缺点:

中介者角色承担了较多的责任,所以一旦这个中介者对象出现了问题,整个系统将会受到重大的影响。

应用:

中介者模式,定义了一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显式地相互引用,从而使其耦合性降低,而且可以独立地改变它们之间的交互。中介者模式一般应用于一组定义良好的对象之间需要进行通信的场合以及想定制一个分布在多个类中的行为,而又不想生成太多的子类的情形下。


4.总结:其实对于设计模式的分析可以首先从其所属的不同类别进行划分,然后明确其具体的特点。理解它所体现的面向对象的设计模式思想。对于具有相似性的知识点可以通过对比学习和分析,这样会有更深的理解。


 






posted @ 2014-12-06 14:58  幻想泡沫  阅读(158)  评论(0编辑  收藏  举报