适配器模式(Adapter Pattern)是一种结构设计模式,用于使原本不兼容的接口能够一起工作。它通常包含一个“适配器”类,该类将一个类的接口转换成客户端期望的另一个接口表示。适配器模式让不同的接口能够协同工作,提高了复用性。
适配器模式的关键要素:
- 目标接口(Target Interface):客户端使用的接口。
- 适配者类(Adaptee Class):需要适配的类,它有自己定义的接口。
- 适配器类(Adapter Class):通过在内部包装一个适配者对象,把源接口转换成目标接口。
示例代码:
假设我们有一个第三方库的类,其接口不符合我们的系统要求,我们需要创建一个适配器来使这个类能够被我们的系统使用。
首先,我们定义目标接口,这是我们系统期望的接口:
public interface Target {
void request();
}
然后,我们有一个已经存在的类,它有一个不同的接口:
public class Adaptee {
public void specificRequest() {
System.out.println("Adaptee performs a specific request.");
}
}
接下来,我们创建适配器类,它实现了目标接口,并在内部使用适配者类:
public class Adapter implements Target {
private Adaptee adaptee;
public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}
@Override
public void request() {
// 将目标接口的调用转换为适配者接口的调用
adaptee.specificRequest();
}
}
最后,在客户端代码中,我们可以通过适配器来使用原本不兼容的类:
public class AdapterPatternDemo {
public static void main(String[] args) {
Adaptee adaptee = new Adaptee();
Target target = new Adapter(adaptee);
target.request(); // 通过适配器调用Adaptee的方法
}
}
在这个示例中,Target
是目标接口,Adaptee
是已经存在的类,Adapter
是适配器类。客户端代码通过 Adapter
来使用 Adaptee
,而不需要知道 Adaptee
的具体实现细节。
适配器模式使得我们可以重用现有的类,即使它们的接口与我们的系统不兼容。它还提供了一个清晰的解耦方式,使得我们可以在不影响客户端代码的情况下,替换或修改适配器的实现。