在软考过程中,学完设计模式之后,发现有好些设计模式特别像,那么,我们这就来总结一下。
今天首先要介绍的是代理、中介和适配器模式,为什么将这三个模式放一块儿呢,因为,我觉得这三个模式从字面上理解,都是通过第三者来完成的,那么它们到底有什么不一样呢?
一、概念Pk
1、代理模式
代理模式是对象的结构模式(描述对象与对象之间的关系)。为其他对象提供一种代理以控制对这个对象的访问。
在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
2、中介者模式
用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。
3、适配器模式
将一个类的接口转换成客户希望的另外一个接口。A d a p t e r 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
二、类图Pk
1、代理模式
抽象对象角色:声明了目标对象和代理对象的共同接口,这样一来在任何可以使用目标对象的地方都可以使用代理对象。
目标对象角色:定义了代理对象所代表的目标对象。
代理对象角色:代理对象内部含有目标对象的引用,从而可以在任何时候操作目标对象;代理对象提供一个与目标对象相同的接口,以便可以在任何时候替代目标对象。代理对象通常在客户端调用传递给目标对象之前或之后,执行某个操作,而不是单纯地将调用传递给目标对象。
2、中介者模式
3、适配器模式
四、总结Pk
| 代理 | 适配 | 中介 |
继承 | 原类和代理类继承同一父类 | 只有适配继承目标接口 | 多个对象继承自同一个接口 |
作用 | 起隐藏原类的作用 | 使接口兼容 | 封装多个对象间的交互 |