【设计模式与体系结构】结构型模式-适配器模式
引言
张三从国内带了个家用电器(220V)去到美国,但是插上电以后却发现电器不能正常工作。经过了解,原来美国的标准电压是120V,而国内是220V。于是张三恍然大悟:原来是电压不适配导致的机器无法正常工作。张三找人要来了变压器,于是解决了这个问题。
这里所说的“变压器”,就相当于编程时的适配器。为了更规范地编程,设计模式中专门总结了适配器模式。
简介
适配器模式(Adapter Pattern)指的是将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的类可以一起工作。适配器模式分为类适配器模式和对象适配器模式,适配器和适配者的关系在前者中是继承或实现关系,后者是关联关系,前者耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对少些。
适配器模式的角色
- 目标(Target)接口:目标抽象类定义客户所需接口,可以是一个抽象类或接口,也可以是一个具体类
- 适配器(Adapter)类:自定义的适配器
- 适配者(Adaptee)类:可以简单理解为组件库中已有的组件
适配器模式的类型
- 类适配器模式:适配器和适配者的关系是继承或实现关系。值得注意的是,若适配者类是final类,则无法使用类适配器模式
- 对象适配器模式:适配器和适配者的关系是关联关系,因为关联关系的耦合程度比继承关系、实现关系都低,因此对象适配器模式使用较多
适配器模式的优点
- 实现了类的复用
- 灵活性好:可以在不修改原有代码的基础上,通过适配器来添加新的功能或者改变接口的调用方式。这样在系统升级或者功能扩展时,能够更好地维护代码的稳定性。
适配器模式的缺点
- 增加系统复杂度:引入新的适配器,会增加系统的层次和耦合度,会使得项目复杂难以理解、维护困难
- 性能损耗:由于需要进行适配操作,有可能造成性能上的一定损耗
正文
类适配器
类适配器的类图如下:
注:Java 不支持多继承,上述类图可以理解为一个为继承关系,一个是实现关系。
对象适配器
对象适配器的类图如下:
合集:
结构型模式
分类:
设计模式与体系结构 / 设计模式
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 本地部署 DeepSeek:小白也能轻松搞定!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 从 Windows Forms 到微服务的经验教训
· 李飞飞的50美金比肩DeepSeek把CEO忽悠瘸了,倒霉的却是程序员
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee