代理、中介者 VS. 外观模式

来源:互联网 发布:科三模拟考试软件 编辑:程序博客网 时间:2024/05/16 19:42

        刚刚学完中介者模式,觉得它和前面的几个设计模式有很多的类似点,比如说代理模式和外观模式。接下来就讨论一下它们的异同。 


三个模式的区别:

    代理模式:A想送B礼物,但B不认识A,也就是说互相不认识,让两者都认识的C来实现送礼物。封装了A

    中介者模式:AB想互相通信,但是AB可能互相不认识,通过中介者C来传达信息。封装了AB,减少了AB之间的耦合。

    外观模式:AB想互相送礼物或添加功能,通过C来实现所有能实现的方法,让AB来继承C,封装了所有子类。


中介者模式:

     中介者模式就是用一个中介对象来封装一系列的对象交互。这之间的各对象不需要显式的相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。


中介者模式的优点:

         1、减少各个对象之间的耦合,可以独立的改变和复用对象。

         2、提高系统的灵活性,把关注它们本身的行为转移到它们之间的交互上来,从一个更宏观的角度去看系统。


中介者模式的缺点:

    由于中介者集中控制对象,所以交互复杂性变为了中介者的复杂性。使得中介者比任何一个具体对象都复杂,增加了中介者的职责

       就像联合国安全理事会,是世界上所有国家的中介者,它需要了解每个国家的安全,但是国家与国家之间不需要互相了解,它集中的控制了世界上所有国家的安全问题,可以从全球化的宏观角度来解决世界安全问题。但是世界上的国家那么的多,以至于这个中介者需要知道每一个国家,工作变得繁忙,这也是它的缺点所在,有一定的复杂性。


中介者模式应用的场合:

          1、一组对象以定义良好但是复杂当然方式进行通信的场合。

          2、想定制一个分部在多个类中的行为,而又不想生成太多的子类的场合。


    

外观模式:

     外观模式就是为子系统中的一组接口提供一个一致的界面,子类继承外观类的所有属性方法,客户端只需要和外观类打交道,不需要知道具体子类的内部,封装了所有的子类。 

   




代理模式:

     代理模式就是为原对象创建一个代理,客户端只需和代理交互,代理负责和被操作者的交互。被操作者不用了解原对象,这样封装了原对象。

      


三者的联系:     

    1、它们都有很好的封装性,只是代理模式封装了委托代理原对象,中介者模式封装了互相不了解的通信的所有对象,外观模式封装了多有外观类的子对象。

    2、代理模式针对的是单个对象,而外观模式针对的是所有子类,中介者模式针对有通信的对象双方。

      


 

0 0
原创粉丝点击