1. 什么是适配器
适配器模式Adapter
是一种结构型设计模式,它可以将一个类的接口转换成客户希望的另一个接口,主要目的是充当两个不同接口之间的桥梁,使得原本接口不兼容的类能够一起工作。
2. 基本结构
适配器模式分为以下几个基本角色:
可以把适配器模式理解成拓展坞,起到转接的作用,原有的接口是USB,但是客户端需要使用
type-c
, 便使用拓展坞提供一个type-c
接口给客户端使用
- 目标接口
Target
: 客户端希望使用的接口 - 适配器类
Adapter
: 实现客户端使用的目标接口,持有一个需要适配的类实例。 - 被适配者
Adaptee
: 需要被适配的类
这样,客户端就可以使用目标接口,而不需要对原来的Adaptee
进行修改,Adapter
起到一个转接扩展的作用。
3. 基本实现
1 | // 目标接口 |
4. 应用场景
在开发过程中,适配器模式往往扮演者“补救”和“扩展”的角色:
- 当使用一个已经存在的类,但是它的接口与你的代码不兼容时,可以使用适配器模式。
- 在系统扩展阶段需要增加新的类时,并且类的接口和系统现有的类不一致时,可以使用适配器模式。
使用适配器模式可以将客户端代码与具体的类解耦,客户端不需要知道被适配者的细节,客户端代码也不需要修改,这使得它具有良好的扩展性,但是这也势必导致系统变得更加复杂。
具体来说,适配器模式有着以下应用:
- 不同的项目和库可能使用不同的日志框架,不同的日志框架提供的API也不同,因此引入了适配器模式使得不同的API适配为统一接口。
- Spring MVC中,
HandlerAdapter
接口是适配器模式的一种应用。它负责将处理器(Handler)适配到框架中,使得不同类型的处理器能够统一处理请求。 - 在
.NET
中,DataAdapter
用于在数据源(如数据库)和DataSet
之间建立适配器,将数据从数据源适配到DataSet
中,以便在.NET应用程序中使用。