适配器模式(Adapter Pattern)
适配器模式是一种结构型模式,它可以将一个类的接口转换成客户端所期望的另一种接口。适配器模式可以帮助开发人员在不修改现有代码的情况下,将不兼容的类组合在一起。适配器模式包括以下几个组成部分:
- 目标接口(Target Interface):客户端期望的接口。
- 适配器(Adapter):充当两个不兼容接口之间的桥梁,使得它们可以互相通信。
- 适配者(Adaptee):需要被适配的对象,它的接口与目标接口不兼容。
- 客户端(Client):使用目标接口的对象。
应用场景
-
当需要将一个已有的类或接口与另一个不兼容的类或接口进行协同工作时。
-
当需要对一个已有的类或接口进行修改,以满足客户端的需求时,但是不希望修改该类或接口的源代码。
-
当需要重新使用一个已有的类或接口,但是不能直接使用该类或接口的方法时。
代码实现
在这个示例中,我们有一个目标接口 Target 和一个不兼容的适配者 Adaptee,我们需要创建一个适配器 Adapter 来让它们能够一起工作。 适配器实现了目标接口 Target,并在构造函数中接受一个适配者对象 Adaptee,然后在实现目标接口的 request 方法中调用适配者的 specificRequest 方法。 在客户端中,我们创建了一个适配者对象 adaptee,并将其传递给适配器的构造函数创建一个适配器对象 adapter。最后,我们使用目标接口 Target 中定义的方法 request 来访问适配器,从而调用适配者的方法。
// 目标接口
interface Target {
void request();
}
// 适配者
class Adaptee {
void specificRequest() {
System.out.println("Adaptee specificRequest.");
}
}
// 适配器
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();
}
}
使用小结
适配器模式是一种非常有用的设计模式,在JDK中被广泛应用,可以提供一致的接口,比如:
Java IO 流是一个常见的适配器模式的例子。它提供了一组标准的接口来访问各种类型的数据源,包括文件、网络连接、内存等等。每个数据源都有自己的接口,但是 Java IO 流可以将这些不同的接口转换为标准的接口,从而提供一致的访问方式。
Java Servlet API 也是一个常见的适配器模式的例子。它定义了一组接口来处理 HTTP 请求和响应,包括 doGet()、doPost()、doPut() 等等。每个 Servlet 都必须实现这些接口,但是用户只需要实现其中的一部分即可。这些 Servlet 之间的适配工作由 Servlet 容器完成。
评论( 0 )