设计模式学习之---Adapter(适配器)模式

本文介绍了Adapter适配器模式的概念,包括其目的、实现方式及应用场景。详细对比了类适配器和对象适配器的不同实现方法,并提供了具体的代码示例。

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

1、Adapter适配器模式,是一种接口型模式。它将一个或多个类的接口,转换成客户所期望的接口。

2、它的宗旨是:基于现有类所提供的服务,向客户提供接口,以满足客户的期望。

3、实现:创建一个客户所需接口的类,然后包装现有类的方法,这样就包含了被适配对象。

4、主要有两种类型:类适配器和对象适配器。

<wbr><wbr> a 当客户指定需求接口时,我们通常可以创建一个新类,来实现接口和扩展现有类。这样我们就创建了一个类适配器,它将把客户的调用,转变为调用现有类的方法。</wbr></wbr>

<wbr><wbr> b 为了满足客户的需求接口,我们实现了这个接口,但此时不能扩展现有类(例如,我们已经扩展了一个抽象类),或者逻辑意义上不存在扩展关系,些时,通过委派给一个现有的类,来实现客户所需接口。这样我们就创建了一个对象适配器,部分解决了适配一个对象到一个没有明确定义的接口的问题。</wbr></wbr>

5、适用情况:你希望使用他人所编写的程序或方法,因为你需要它所执行的功能;你无法将这个子程序直接加入程序中;子程序的接口或调用方式,与所需要的接口,不完全相同。

6、示例。

类适配器:

public interface RequiredInterface{

<wbr><wbr><wbr><wbr><wbr><wbr> public void requiredMethod();</wbr></wbr></wbr></wbr></wbr></wbr>

}

public class ExistingClass{

<wbr><wbr><wbr><wbr><wbr><wbr> public void usefulMethod(){</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> .......</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr> }</wbr></wbr></wbr></wbr></wbr></wbr>

}

public class NewClass extends ExistingClass implements RequiredInterface{

<wbr><wbr><wbr><wbr><wbr> public void requiredMethod(){</wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> usefulMethod();</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>..........</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr> }</wbr></wbr></wbr></wbr></wbr>

}

对象适配器:

public class RequiredClass{

<wbr><wbr><wbr><wbr><wbr><wbr> public void requiredMethod(){</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> ..........</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr> }</wbr></wbr></wbr></wbr></wbr></wbr>

}

public class ExistingClass{

<wbr><wbr><wbr><wbr><wbr><wbr> public void usefulMethod(){</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> .......</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr> }</wbr></wbr></wbr></wbr></wbr></wbr>

}

public class NewClass extends RequiredClass{

<wbr><wbr><wbr><wbr><wbr> private ExistingClass existingClass;</wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr> public NewClass(ExistingClass existingClass){</wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> this.existingClass = existingClass;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr> }</wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr> public void requiredMethod(){</wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> existingClass.usefulMethod();</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>..........</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr> }</wbr></wbr></wbr></wbr></wbr>

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值