首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > VSTS >

署理模式VS外观模式VS适配器模式

2012-12-24 
代理模式VS外观模式VS适配器模式代理模式VS外观模式VS适配器模式学习了一个多月的设计模式,下面就对一些比

代理模式VS外观模式VS适配器模式
代理模式VS外观模式VS适配器模式

学习了一个多月的设计模式,下面就对一些比较容易混淆的模式作一些比较和总结吧,如有不正确的地方,还望大家指正。
首先,看看代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。以下是它的UML图:
署理模式VS外观模式VS适配器模式
署理模式VS外观模式VS适配器模式
Subject类定义了RealSubject和Proxy的共用接口,这样就可以在任何使用RealSubject的地方都可以使用Porxy。署理模式VS外观模式VS适配器模式为什么要用代理模式呢?它应用于什么场合呢?1、远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。
2、虚拟代理,是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。如打开网页时,通过虚拟代理来替代了真实的网页中的图片,使你可以迅速打开网面,而图片却是一张张打开,虚拟代理存储了真实图片的路径和尺寸。
3、安全代理,用来控制真实对象访问时的权限。
4、智能指引,是指当调用真实的对象时,代理处理另外一些事。如C++智能指针和内核对象的引用计数。

然而,外观模式呢?看看它的定义:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。以下是它的UML图:
署理模式VS外观模式VS适配器模式署理模式VS外观模式VS适配器模式
署理模式VS外观模式VS适配器模式

外观模式应用于:1、在设计初期阶段,有意识的将不同的两个层分离,层与层之间建立外观,这样就可以为复杂的子系统提供一个简单的接口,降低耦合度。
2、在开发阶段,子系统往往因为不断的重构和演化而变得越来越复杂,增加外观可以提供一个简单的接口,减少它们之间的依赖。
3、在维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展,为新系统开发一个外观类,来提供设计粗糙或高度复杂的遗留代码的比较较清晰简单的接口,让新系统与外观对象交互,外观与遗留代码的复杂工作。
最后来看看,适配器模式。它的定义为:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作,以下是它的UML图:署理模式VS外观模式VS适配器模式
署理模式VS外观模式VS适配器模式
适配器模式应用于:当系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围这外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现在的类,但是接口又与复用环境要求不一致的情况。
总结:这三个模式的相同之处是,它们都作用于用户与真实被使用的类或系统之间,作一个中间层,起到了让用户间接地调用真实的类的作用。它们的不同之外在于,如上所述的应用场合不同和本质的思想不同。
代理与外观的主要区别在于,代理对象代表一个单一对象而外观对象代表一个子系统,代理的客户对象无法直接访问对象,由代理提供单独的目标对象的访问,而通常外观对象提供对子系统各元件功能的简化的共同层次的调用接口。代理是一种原来对象的代表,其他需要与这个对象打交道的操作都是和这个代表交涉的。而适配器则不需要虚构出一个代表者,只需要为应付特定使用目的,将原来的类进行一些组合。
外观与适配器都是对现存系统的封装。外观定义的新的接口,而适配器则是复用一个原有的接口,适配器是使两个已有的接口协同工作,而外观则是为现存系统提供一个更为方便的访问接口。如果硬要说外观是适配,那么适配器有用来适配对象的,而外观是用来适配整个子系统的。也就是说,外观所针对的对象的粒度更大。
代理模式提供与真实的类一致的接口,意在用代理类来处理真实的类,实现一些特定的服务或真实类的部分功能,Facade(外观)模式注重简化接口,Adapter(适配器)模式注重转换接口。


热点排行