适配器模式详解 适配器模式

适配器和适配器模式分别是什么?适配器就是一个接口转换器 , 它可以是一个独立的硬件接口设备 , 允许硬件或电子接口与其它硬件或电子接口相连 , 也可以是信息接口 。比如:电源适配器、三角架基座转接部件、USB与串口的转接设备等 。电源适配器是小型便携式电子设备及电子电器的供电电源变换设备 , 一般由外壳、电源变压器和整流电路组成 , 按其输出类型可分为交流输出型和直流输出型;按连接方式可分为插墙式和桌面式 。移动PC由于没有电池 , 电源适配器对其尤为重要 。在计算机编程中 , 适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的 。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起 , 做法是将类自己的接口包裹在一个已存在的类中 。适配器模式主要应用于 , 当接口里定义的方法无法满足客户的需求 , 或者说接口里定义的方法的名称或者方法界面与客户需求有冲突的情况 。两类模式:适配器调用被包裹对象的物理实体 。类适配器模式 , 这种适配器模式下 , 适配器继承自已实现的类(一般多重继承) 。适配器不具备数据速率转换功能 。适配器模式主要是在程序代码写好之后 , 又遇到了需要使用新对象的情况 , 新的对象和原来使用的对象 , 本质上是一种 , 但是里面的方法和属性都不相同 , 所以为了减少代码的修改 , 就像电源适配器一样 。

适配器模式详解 适配器模式

文章插图
适配器模式(Adapter) 网上看到不少关于适配器模式的讲解 , 其中对于适配器模式解释的过于专业 , 一时不是特别理解适配器模式到底是用来干嘛的 , 具体的适用场景在哪 , 其最精髓的地方到底在哪 。
本文结合自己的理解 , 阐述下对适配器模式的看法 。
假设系统存在一个现有的类UserInfo:
客户端可以通过如下方式set、get员工基本信息:
有一天 , 基于某种原因(也许你看着这种取数据的方式不太爽 , 也许是系统间数据交换的原因等) , 你需要按照如下接口的方式取数据:
目标员工接口:
那么 , 现在的问题是 , 如何将一个既定的类转换成按照目标接口的所期望的行为形式呢?
具体怎样实现呢 , 可以通过如下方式进行:
从上面的UserAdapter类定义中我们发现 , UserAdapter不仅实现了UserInterface接口 , 同时还继承了UserInfo类 。在实现接口的getName()和getTelNumber()方法中 , 分别调用了UserInfo类中的相应方法并取得结果 。由此可以满足需求 。在上述定义中 , 按照UserInterface、UserInfo和UserAdapter在场景中的目的不同 , 可以具体划分成如下角色:
UserInterface:目标角色——目标接口 , 系统所期待实现的目标;
UserInfo:源角色——当前已经存在的原有的实现类 , 即将被适配的类;
UserAdapter:适配器角色——将原有实现装换为目标接口的实现 。
简单点说 , 适配器模式是指: 定义一个类 , 将一个已经存在的类 , 转换成目标接口所期望的行为形式。
在具体的实现过程中 , 又可以基于其实现层次是类层次还是对象层次 , 将其分为类适配器和对象适配器 。如上所写的是类适配器 。
对象适配器使用组合代替继承 , 将源角色视为适配器角色的属性:
总体而言:适配器模式是指定义一个适配器类 , 将一个已经存在的类 , 转换成目标接口所期望的行为形式 。同时 , 一般来说 , 基于更多的推荐使用组合而不是继承 , 因此 , 对象适配器可能使用更多 。
命令模式和适配器的区别1.命令模式
命令模式(Command Pattern):
将“请求”封装为对象 , 以便使用不同的请求 , 队列或者日志来参数化其他对象 。
命令模式也支持可撤销的操作 。
命令模式将发出请求的对象和执行请求的对象解耦 。
调用者通过调用命令对象的execute()发出请求 , 这会使得接收者的动作被调用 。
2.适配器模式
适配器模式(Adapter Pattern):

秒懂生活扩展阅读