北风设计模式课程---外观模式、代理模式的区别(总结)

北风设计模式课程---外观模式、代理模式的区别(总结)

一、总结

一句话总结:

外观模式(Facade Pattern):外观类隐藏系统的复杂性,为客户端提供简化的方法和对现有系统类方法的委托调用。
代理模式(Proxy Pattern):用一个代理类代表另一个类的功能,但是不改变被代理类的功能,代理类中可以增加功能。

二、外观模式、代理模式和中介者模式的区别

参考:外观模式、代理模式和中介者模式的区别 - cjxunooo的博客 - CSDN博客
https://blog.csdn.net/cjxunooo/article/details/84985679

外观模式(Facade Pattern)
定义一个外观类,外观类隐藏系统的复杂性,为客户端提供简化的方法和对现有系统类方法的委托调用。
例如:二手房交易的中介,属于外观模式。买房者通过中介可以简单地买到二手房,中介自己把联系房东看房砍价、过户、交税这些复杂的事情都搞定了。

代理模式(Proxy Pattern)
用一个代理类代表另一个类的功能,但是不改变被代理类的功能。目的是控制对被代理类的访问。

中介者模式(Mediator Pattern)
用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。将各对象之间的网状结构分离为星型结构。
例如:MVC 框架,其中C(控制器)就是 M(模型)和 V(视图)的中介者。微信群是各群员之间的中介者。

三、门面(外观)模式和代理模式区别

参考:门面(外观)模式和代理模式区别 - qq1302526289的博客 - CSDN博客
https://blog.csdn.net/qq1302526289/article/details/88812896

今天用旅游吃饭来区分下门面模式和代理模式
门面模式是给用户提供一种服务,就相当于我们的饭店,可以给顾客提供美味的食物
代理模式是根据用户的需求,提供解决该需求的方案,相当于我们的导游,给游客提供自己想知道的信息

情景:某某某天去某地旅游,但是他又不知道当地的风土人情、名胜古迹以及饭店
操作:他就找了一个导游,导游可以给某某介绍这某地的旅游地点以及饭店,然后某某也玩的很开心。
进化:导游扩充了自己的资料库,可以提供游客更喜欢去的旅游景点以及更符合胃口的饭店

确认是一个合格的吃货
以上是为了区分门面模式和代理模式的区别,本人感觉代理模式只是一个特殊的门面模式,因为提供解决方案也是一种服务。

四、代理模式vs适配器模式vs外观模式

参考:代理模式vs适配器模式vs外观模式 - 小怪兽&奥特曼 - 博客园
https://www.cnblogs.com/jinxiang1224/p/8468207.html

一、定义

代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。

适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口,使得原本接口不兼容而不能一起工作的那些类可以一起工作。

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

二、理解

代理模式和适配器模式应该说很相像,但是他们的区别也很明显,代理模式和被代理者的接口是同一个,只是使用中客户访问不到被代理者,所以利用代理间接的访问,而适配器模式,是因为接口不同,为了让用户使用到统一的接口,把原先的对象通过适配器让用户统一的使用,大多数运用在代码维护的后期,或者借用第三方库的情况下 ,而外观模式,是大家经常无意中使用的,就是把错综复杂的子系统关系封装起来,然后提供一个简单的接口给客户使用,就类似于一个转接口,可以想象成一个漏斗,中间细的那一段,越细耦合度越低,外观模式就是为了降低耦合度。

三、类图

代理模式

适配器模式

外观模式

四、Code

代理模式,代理者保存一个被代理的一个对象;适配器模式,保存了一个被适配的对象;而外观模式,就保存了各个子系统对象,然后根据实际逻辑组合。

 
原文地址:https://www.cnblogs.com/Renyi-Fan/p/11031682.html