1. 模式简介
将一个原有的类的接口转换成期望的另一个接口,使原本的接口不兼容的类可以一起工作。属于结构型设计模式
。
2. 示例代码
这里我们模拟一个现实生活中的例子,之前电脑的接口都是 USB 接口,现在很多设备新增了 Type-C 接口,为了兼容,出了一种转接头设备,将 USB 接口输出变成 Type-C 接口输出。
- USB 接口类
1 | /** |
- Type-C 接口
1 | /** |
- USB 转 Type-C 转接头
1 | /** |
- 测试类
1 | /** |
- 测试结果
1 | 接口类型:USB |
3. UML 图例
4. 应用
1 | // Spring MVC 中的 HandlerAdapter |
5. 场景
已经存在的类,它的方法和需求不匹配(方法结果相同或相似)的情况。
适配器模式不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同产品、不同厂家造成功能类似而接口不相同情况下的解决 方案。
6. 优缺点
优点: 1、能提高类的透明性和复用,现有的类复用但不需要改变。 2、目标类和适配器类解耦,提高程序的扩展性。 3、在很多业务场景中符合开闭原则。
缺点: 1、适配器编写过程需要全面考虑,可能会增加系统的复杂性。2、增加代码阅读难度,降低代码可读性,过多使用适配器会使系统代码变得凌乱。
7. 完整代码地址
https://github.com/xkcoding/design-pattern/tree/master/src/main/java/com/xkcoding/design/pattern/structural/adapter