您的位置:首页 > 其它

辨析代理模式、外观模式、适配器模式三者区别

2014-06-29 17:27 375 查看
代理模式

定义:为其他对象提供一种代理以控制对这个对象的访问。

UML图:



举例:就好比古代的皇帝下旨一样,皇帝从来不自己宣布自己的旨意,都是让太监代理宣布圣旨,而官员(相当于客户端)只能通过太监(代理)知道皇帝的旨意!

外观模式

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

UML图:



举例:就好比有一远道而来的洋人,皇帝(客户端)听不懂外语,只能通过翻译(适配器)与其沟通!

适配器模式

定义:讲一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

UML图:



举例:还从皇帝身上下手,据说,古代的皇帝后宫佳丽三千,不管是真是假,就当做真了!那么多妃嫔,皇帝不可能全部知道,聪明的太监给皇帝想到了一个好的办法,就是“翻牌”,皇帝通过翻牌(外观类)来选择哪个妃嫔侍寝!这样就降低了皇帝和嫔妃的耦合度,皇帝就可以专心朝政了!

三者区别

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

2、代理与适配器:代理与适配器都属于一种衔接性质的功能。代理是一种原来对象的代表,其他需要与这个对象打交道的操作都与这个代表交涉。而适配器则不需要虚构出一个代表,只需要为应付特定使用的目的,将原来的类进行一些组合。

3、外观与适配器:外观与适配器都是对现存系统的封装。外观定义的新的接口,而适配器则是复用一个原有的接口。适配器是使两个已有的接口协同工作,而外观则是为现存系统提供一个更为方便的访问接口。如果硬要说外观是适配,那么适配器是用来适配对象的,而外观是用来适配整个子系统的。也就是说,外观所针对的对象的粒度更大。
三者的相同点

这三个模式的相同之处是,它们都作用于用户与真实被使用的类或系统之间,作一个中间层,起到了让用户间接地调用真实的类的作用。

总结

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

2、代理模式提供与真实的类一致的接口,意在用代理类来处理真实的类,实现一些特定的服务或真实类的部分功能,外观模式注重简化接口,适配器模式注重转换接口。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐