适配器模式:转换匹配,复用已有功能

简介: 适配器模式的本质是转换匹配,复用已有功能

场景分析(如图)
image.png

定义及本质

定义:把一个类的接口转换成客户端所期待的另一个接口,从而将原来接口不匹配而不能一起工作的两个类匹配在一起工作,使之达到已有对象的功能被复用的目的。
本质:转换匹配,复用功能。

类适配器与对象适配器
类适配器:采用对象继承方式,是静态的定义方式;
对象适配器:采用对象组合方式,是动态组合的方式;
两者比较:

1)子类处理:类适配器:一个Adapter只有一个Adaptee,不能再去处理Adaptee的子类;对象适配器:允许一个Adapter有多个Adaptee;
2)重新定义行为:类适配器:可以重定义Adaptee的行为,子类覆盖父类的部分实现方法;对象适配器:不能重新定义Adaptee的行为;
3)对象的引用:类适配器:不需要额外引用Adaptee接口;对象适配器:需要额外引用得到Adaptee对象;

(1)类适配器
image.png
(2)对象适配器
image.png

UML类图
image.png

调用时序图
image.png

优缺点
(1)优点
提高类的复用性:如果想使用现有的类所提供的功能,而此类的接口又不符合现有系统的需要。通过适配器模式就可以让这些功能得到更好的复用。
扩展性:在实现适配器的时候,可以调用自己开发的功能,从而自然地扩展系统的功能。
(2)缺点

过多使用会导致系统零散混乱,不容易整体掌控。如:调用A适配成B。

(3)使用注意
适配器模式属于补偿模式,专门用来在系统后期扩展、修改时使用,但要注意不要过度使用适配器模式。

相关文章
|
API Serverless 监控
函数组合的N种方式
随着以函数即服务(Function as a Service)为代表的无服务器计算(Serverless)的广泛使用,很多用户遇到了涉及多个函数的场景,需要组合多个函数来共同完成一个业务目标,这正是微服务“分而治之,合而用之”的精髓所在。
2227 0
|
28天前
|
C++
4. C++类的组合
4. C++类的组合
26 0
|
1月前
|
算法 编译器 C++
【C++ 概念区分】C++ 中覆盖,重写,隐藏 三者的区别
【C++ 概念区分】C++ 中覆盖,重写,隐藏 三者的区别
19 0
|
8月前
|
C++
C++类的组合
C++类的组合
|
6月前
|
设计模式 存储 Java
JAVA设计模式11:组合模式,以统一的方式处理单个对象和组合对象
JAVA设计模式11:组合模式,以统一的方式处理单个对象和组合对象
|
6月前
|
设计模式 Java
JAVA设计模式7:适配者模式,彻底解决两不兼容接口之间的问题
JAVA设计模式7:适配者模式,彻底解决两不兼容接口之间的问题
|
6月前
|
设计模式 Java 数据库连接
JAVA设计模式8:装饰模式,动态地将责任附加到对象上,扩展对象的功能
JAVA设计模式8:装饰模式,动态地将责任附加到对象上,扩展对象的功能
|
8月前
|
算法 C语言 C++
C++类的组合练习
C++类的组合练习
|
JavaScript 前端开发
js对象的创建对象模式和继承模式(上)---构建对象模式
js对象的创建对象模式和继承模式(上)---构建对象模式
110 0
|
编译器 Scala 开发者
类型匹配的注意事项和细节 | 学习笔记
快速学习类型匹配的注意事项和细节
58 0