Adapter(适配器)模式

本文介绍了适配器模式的基本概念,包括其意图、结构及参与者,并提供了类适配器和对象适配器的具体实现示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1. 意图

将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容

而不能一起工作的那些类可以一起工作。

 

2. 结构

类适配器使用多重继承对一个接口与另一个接口进行匹配,如下图所示。

对象匹配器依赖于对象组合,如下图所示。

3. 参与者

• Target

— 定义Client使用的与特定领域相关的接口。

• Client

 

— 与符合Ta rg e t接口的对象协同。

• Adaptee

— 定义一个已经存在的接口,这个接口需要适配。

• Adapter 

— 对Adaptee的接口与Target接口进行适配

      在Adapter模式的结构图中可以看到,类模式的Adapter采用继承的方式复用Adaptee的接口,而在对象模式的Adapter中我们则采用组合的方式实现Adaptee的复用。

4. 实现

(1). 类适配器

 

(2). 对象适配器

 

 

5. 代码说明

Adapter模式实现上比较简单,要说明的是在类模式Adapter中,我们通过private继承Adaptee获得实现继承的效果,而通过public继承Target获得接口继承的效果(有关实现继承和接口继承参见讨论部分)。

6. 讨论

在Adapter模式的两种模式中,有一个很重要的概念就是接口继承和实现继承的区别和联系。接口继承和实现继承是面向对象领域的两个重要的概念,接口继承指的是通过继承,子类获得了父类的接口,而实现继承指的是通过继承子类获得了父类的实现(并不统共接口)。在C++中的public继承既是接口继承又是实现继承,因为子类在继承了父类后既可以对外提供父类中的接口操作,又可以获得父类的接口实现。当然我们可以通过一定的方式和技术模拟单独的接口继承和实现继承,例如我们可以通过private继承获得实现继承的效果(private继承后,父类中的接口都变为private,当然只能是实现继承了。),通过纯抽象基类模拟接口继承的效果,但是在C++中pure virtual function也可以提供默认实现,因此这是不纯正的接口继承,但是在Java中我们可以interface来获得真正的接口继承了。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值