当前位置:实例文章 » JAVA Web实例» [文章]【设计模式——学习笔记】23种设计模式——适配器模式Adapter(原理讲解+应用场景介绍+案例介绍+Java代码实现)

【设计模式——学习笔记】23种设计模式——适配器模式Adapter(原理讲解+应用场景介绍+案例介绍+Java代码实现)

发布人:shili8 发布时间:2025-02-28 15:19 阅读次数:0

**设计模式——学习笔记**

**23种设计模式——适配器模式Adapter**

**原理讲解**

适配器模式(Adapter Pattern)是一种结构型设计模式,它的主要目的是为了使两个不兼容的接口能够一起工作。这种模式涉及到一个转换器,用于将一个接口的对象转换为另一个接口所期望的形式。

**应用场景介绍**

适配器模式通常在以下情况下使用:

* 当你需要使用一个已经存在的类,但它的接口与你的需求不符时。
* 当你需要扩展一个现有的类,或者添加一些新的功能到这个类中时。
* 当你需要将一个类转换为另一个类的形式,以便它们能够一起工作时。

**案例介绍**

假设我们有一个电源适配器,它可以将交流电转换为直流电。现在,我们想使用这个电源适配器来给我们的手机充电,但是手机需要的是交流电,而不是直流电。这个时候,我们就可以使用适配器模式来解决这个问题。

**Java代码实现**

java// Target接口(目标接口)
interface Target {
 void charge();
}

// Adaptee类(被适配的类)
class Adaptee implements Target {
 @Override public void charge() {
 System.out.println("Adaptee is charging...");
 }
}

// Adapter类(适配器类)
class Adapter implements Target {
 private Adaptee adaptee;

 public Adapter(Adaptee adaptee) {
 this.adaptee = adaptee;
 }

 @Override public void charge() {
 System.out.println("Adapter is converting...");
 adaptee.charge();
 System.out.println("Adapter has finished charging.");
 }
}

public class Main {
 public static void main(String[] args) {
 Adaptee adaptee = new Adaptee();
 Adapter adapter = new Adapter(adaptee);
 Target target = adapter;

 target.charge(); // Output: Adapter is converting... Adaptee is charging... Adapter has finished charging.
 }
}


在这个例子中,我们有一个`Target`接口,代表手机的充电需求。我们还有一个`Adaptee`类,它实现了`Target`接口,但它提供的是直流电,而不是交流电。然后,我们创建了一个`Adapter`类,它可以将直流电转换为交流电,并且它实现了`Target`接口。

在 `main()` 方法中,我们首先实例化了一个 `Adaptee` 对象,然后我们实例化了一个 `Adapter` 对象,传入了 `Adaptee` 对象作为参数。最后,我们将 `Adapter` 对象赋值给 `Target` 接口类型的变量 `target`。

当我们调用 `target.charge()` 时,它实际上是调用了 `Adapter` 类中的 `charge()` 方法,而这个方法又调用了 `Adaptee` 类中的 `charge()` 方法。因此,整个过程中,我们成功地将直流电转换为交流电,并且给手机充电。

**总结**

适配器模式是一种结构型设计模式,它使两个不兼容的接口能够一起工作。它通常用于解决类之间接口不兼容的问题,可以通过创建一个转换器来实现。通过使用适配器模式,我们可以扩展现有的类,添加新的功能,并且将一个类转换为另一个类的形式,以便它们能够一起工作。

在这个例子中,我们使用了适配器模式来解决手机充电需求和直流电转换的问题。我们创建了一个`Adapter`类,它可以将直流电转换为交流电,并且实现了`Target`接口。通过这种方式,我们成功地给手机充电,展示了适配器模式的应用场景和实践方法。

其他信息

其他资源

Top