【设计模式——学习笔记】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`接口。通过这种方式,我们成功地给手机充电,展示了适配器模式的应用场景和实践方法。