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

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

场景分析(如图)
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)使用注意
适配器模式属于补偿模式,专门用来在系统后期扩展、修改时使用,但要注意不要过度使用适配器模式。

相关文章
|
2月前
|
安全 Java 数据库
ifPresent()`方法的用途、使用场景
ifPresent()`方法的用途、使用场景
143 4
|
API Serverless 监控
函数组合的N种方式
随着以函数即服务(Function as a Service)为代表的无服务器计算(Serverless)的广泛使用,很多用户遇到了涉及多个函数的场景,需要组合多个函数来共同完成一个业务目标,这正是微服务“分而治之,合而用之”的精髓所在。
2293 0
|
19天前
|
开发框架 前端开发 JavaScript
在Winform应用中增加通用的业务编码规则生成
在Winform应用中增加通用的业务编码规则生成
|
29天前
|
设计模式 算法 开发者
软件复用问题之区分「不重复」和「复用」,如何解决
「不重复」和「复用」之间有何区别软件复用问题之区分「不重复」和「复用」,如何解决
|
3月前
|
设计模式 XML SQL
C++建造者模式解析:构建复杂对象的优雅方式
C++建造者模式解析:构建复杂对象的优雅方式
54 1
C++建造者模式解析:构建复杂对象的优雅方式
|
10月前
|
设计模式 存储 Java
JAVA设计模式11:组合模式,以统一的方式处理单个对象和组合对象
JAVA设计模式11:组合模式,以统一的方式处理单个对象和组合对象
112 0
|
10月前
|
设计模式 Java 数据库连接
JAVA设计模式8:装饰模式,动态地将责任附加到对象上,扩展对象的功能
JAVA设计模式8:装饰模式,动态地将责任附加到对象上,扩展对象的功能
|
JavaScript 前端开发
js对象的创建对象模式和继承模式(上)---构建对象模式
js对象的创建对象模式和继承模式(上)---构建对象模式
123 0
|
前端开发 程序员 C#
【C#】通过扩展对象的方式,对字符串等数据类型进行数据进一步处理
在本篇文章中,我们讲一起了解下对象扩展的使用 在实际项目开发中,对象扩展使用的场景还是挺多的,比如:需要对时间值进行再处理,或者字符串中的斜杠(/)转为反斜杠(\)
103 0