结构型模式-适配器模式
1.定义
将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
2.介绍
- 适配器模式属于结构型模式。
- 适配器模式有类适配器模式和对象适配器模式这两种。
- 生活中的手机充电器就是一个适配器的例子,手机一般都是在5V的电压下进行充电,但是外部的电压都是220V,那怎么办,这就需要充电器去适配了,将220V的电压转换为5V。
- 实际开发中,我们常遇到两个类之间的接口不兼容,但是又不想去改动接口,这可以通过适配器模式来解决这个问题。
3.UML类图
角色说明:
- Adapter(适配器接口):即目标角色,定义把其他类转换为何种接口,也就是我们期望的接口。
- Adaptee(被适配角色):即源角色,一般是已存在的类,需要适配新的接口。
- ConcreteAdapter(具体适配器):实现适配器接口,把源角色接口转换为目标角色期望的接口。
4.对象适配器模式实现
首先来说下对象适配器模式的实现方式,就以电压转换为例子。
5.类适配器模式实现
类适配器只要是通过继承源目标类来实现。类适配器模式只要通过继承源目标类来实现,无需持有源目标对象。
两者之间的比较:
- 类适配器采用了继承的方式来实现;而对象适配器是通过传递对象来实现,这是一种组合的方式。
- 类适配器由于采用了继承,可以重写父类的方法;对象适配器则不能修改对象本身的方法等。
- 适配器通过继承都获得了父类的方法,客户端使用时都会把这些方法暴露出去,增加了一定的使用成本;对象适配器则不会。
- 类适配器只能适配他的父类,这个父类的其他子类都不能适配到;而对象适配器可以适配不同的对象,只要这个对象的类型是同样的。
- 类适配器不需要额外的引用;对象适配器需要额外的引用来保存对象。
一般使用对象适配器。具体问题具体分析。
6. 优点
- 提高了类的复用性,适配器能让一个类有更广泛的用途。
- 提高了灵活性,更换适配器就能达到不同的效果。不用时也可以随时删掉适配器,对原系统没影响。
- 符合开放封闭原则,不用修改原有代码。没有任何关系的类通过增加适配器就能联系在一起。
7. 缺点
- 过多的使用适配器,会让系统非常零乱,不易整体进行把握。明明调用A接口,却被适配成B接口。
8. Android中的源码分析
说到适配器,ListView
和RecyclerView
就再熟悉不过了,这里就以RecyclerView
来分析。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术