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

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

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

相关文章
|
4月前
|
缓存 Java 数据库连接
扩展类的附加特性
扩展类的附加特性
31 0
|
5月前
|
Java
继承与组合的区别
【8月更文挑战第22天】
134 0
|
8月前
|
算法 编译器 C++
【C++ 概念区分】C++ 中覆盖,重写,隐藏 三者的区别
【C++ 概念区分】C++ 中覆盖,重写,隐藏 三者的区别
212 0
|
8月前
动态范围匹配逻辑实现
动态范围匹配逻辑实现
47 0
|
设计模式 存储 Java
JAVA设计模式11:组合模式,以统一的方式处理单个对象和组合对象
JAVA设计模式11:组合模式,以统一的方式处理单个对象和组合对象
178 0
|
设计模式 Java 数据库连接
JAVA设计模式8:装饰模式,动态地将责任附加到对象上,扩展对象的功能
JAVA设计模式8:装饰模式,动态地将责任附加到对象上,扩展对象的功能
|
JavaScript 索引
数据类型及相互规则转换,我被问麻了!!!
数据类型及相互规则转换,我被问麻了!!!
112 2
|
存储 JSON 前端开发
Android数据库存储模块封装,让操作记录更好用可复用
Android数据库存储模块封装,让操作记录更好用可复用
|
JavaScript 前端开发
js对象的创建对象模式和继承模式(上)---构建对象模式
js对象的创建对象模式和继承模式(上)---构建对象模式
136 0
C++ 继承与派生中的赋值兼容规则问题探究
C++ 继承与派生中的赋值兼容规则问题探究
192 0
C++ 继承与派生中的赋值兼容规则问题探究