代理、中介者 VS. 外观模式
来源:互联网 发布:科三模拟考试软件 编辑:程序博客网 时间:2024/05/16 19:42
刚刚学完中介者模式,觉得它和前面的几个设计模式有很多的类似点,比如说代理模式和外观模式。接下来就讨论一下它们的异同。
三个模式的区别:
代理模式:A想送B礼物,但B不认识A,也就是说互相不认识,让两者都认识的C来实现送礼物。封装了A。
中介者模式:A和B想互相通信,但是A和B可能互相不认识,通过中介者C来传达信息。封装了A与B,减少了A和B之间的耦合。
外观模式:A和B想互相送礼物或添加功能,通过C来实现所有能实现的方法,让A和B来继承C,封装了所有子类。
中介者模式:
中介者模式就是用一个中介对象来封装一系列的对象交互。这之间的各对象不需要显式的相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
中介者模式的优点:
1、减少各个对象之间的耦合,可以独立的改变和复用对象。
2、提高系统的灵活性,把关注它们本身的行为转移到它们之间的交互上来,从一个更宏观的角度去看系统。
中介者模式的缺点:
由于中介者集中控制对象,所以交互复杂性变为了中介者的复杂性。使得中介者比任何一个具体对象都复杂,增加了中介者的职责
就像联合国安全理事会,是世界上所有国家的中介者,它需要了解每个国家的安全,但是国家与国家之间不需要互相了解,它集中的控制了世界上所有国家的安全问题,可以从全球化的宏观角度来解决世界安全问题。但是世界上的国家那么的多,以至于这个中介者需要知道每一个国家,工作变得繁忙,这也是它的缺点所在,有一定的复杂性。
中介者模式应用的场合:
1、一组对象以定义良好但是复杂当然方式进行通信的场合。
2、想定制一个分部在多个类中的行为,而又不想生成太多的子类的场合。
外观模式:
外观模式就是为子系统中的一组接口提供一个一致的界面,子类继承外观类的所有属性方法,客户端只需要和外观类打交道,不需要知道具体子类的内部,封装了所有的子类。
代理模式:
代理模式就是为原对象创建一个代理,客户端只需和代理交互,代理负责和被操作者的交互。被操作者不用了解原对象,这样封装了原对象。
三者的联系:
1、它们都有很好的封装性,只是代理模式封装了委托代理原对象,中介者模式封装了互相不了解的通信的所有对象,外观模式封装了多有外观类的子对象。
2、代理模式针对的是单个对象,而外观模式针对的是所有子类,中介者模式针对有通信的对象双方。
- 代理、中介者 VS. 外观模式
- 外观、中介者、代理模式
- 外观模式 VS 中介者模式
- 外观模式 VS 中介者模式
- 外观,代理与中介者模式
- 中介者模式、代理模式和外观模式的Pk
- 【设计模式之三:模式对比】外观模式、代理模式与中介者模式的区别
- 设计模式——代理VS中介者
- 设计模式中的“第三方”— 代理、外观、观察和中介者模式
- 代理模式vs适配器模式vs外观模式
- 代理模式vs适配器模式vs外观模式
- 代理模式VS外观模式VS适配器模式
- 代理模式VS外观模式VS适配器模式
- 代理模式vs适配器模式vs外观模式
- 代理模式vs适配器模式vs外观模式
- 门面模式VS中介者模式
- 门面模式VS中介者模式
- 外观模式(注意区别于中介者模式)
- 第9章 JSTL标签库
- 纯CSS3文字效果推荐
- attachEvent 与addEventListener 区别
- iOS导航BarButtonItem文字或者图片与屏幕边界的间隔调整方法
- hadoop命令 - fs count
- 代理、中介者 VS. 外观模式
- iphone开发中的delegate
- 仿照微信朋友圈中点击图片出现大图浏览效果
- C/C++日常学习总结(第七篇)常引用&指针的理解
- 自定义长按菜单实现
- b/s结构与c/s结构
- QT 的信号与槽机制介绍
- 全角和半角转换
- Python启程