【适配器模式】—— 每天一点小知识

🐳设计模式之适配器模式

引言

设计模式是软件开发中重要的概念之一。适配器模式是设计模式中的一种,它用于将一个类的接口转换成客户端期望的另一个接口。在本文中,我们将深入探讨适配器模式的概念和思想,并介绍适配器模式的应用场景以及常见的代码实现方式。

适配器模式的概念和思想

  💧适配器模式是一种结构型设计模式,它通过将一个类的接口转换成客户端期望的另一个接口来实现不兼容接口之间的协作。

  💧适配器模式的核心思想是创建一个适配器类,该适配器类实现客户端期望的接口,并持有一个需要适配的对象实例。适配器类将客户端的请求转发给被适配对象,从而实现对原有接口的适配。


介绍适配器模式的应用场景以及常见的代码实现方式 ↓

应用场景

  💧适配器模式通常在以下场景中使用:

  • 将一个已经存在的类集成到另一个接口中。
  • 在系统中引入一个第三方库或组件,但其接口与系统要求的接口不兼容。
  • 对现有的类库进行功能扩展或修改,但又不希望对原有代码进行修改。

类适配器

  💧类适配器是一种常见的适配器模式实现方式。在该实现中,适配器类继承自被适配类,并实现客户端期望的接口。

public interface Target {
    void request();
}
public class Adaptee {
    public void specificRequest() {
        // 原有接口的实现逻辑
    }
}
public class Adapter extends Adaptee implements Target {
    public void request() {
        specificRequest();
        // 其他适配逻辑
    }
}

在上述代码中,我们定义了一个目标接口 Target 和一个被适配类 Adaptee。适配器类 Adapter 继承自 Adaptee 类,并实现了 Target 接口。适配器类中的 request() 方法将客户端的请求转发给了被适配类的 specificRequest() 方法。

对象适配器

  💧对象适配器是另一种常见的适配器模式实现方式。在该实现中,适配器类持有一个被适配对象的实例,并实现客户端期望的接口。

public interface Target {
    void request();
}
public class Adaptee {
    public void specificRequest() {
        // 原有接口的实现逻辑
    }
}
public class Adapter implements Target {
    private Adaptee adaptee;
    public Adapter(Adaptee adaptee) {
        this.adaptee = adaptee;
    }
    public void request() {
        adaptee.specificRequest();
        // 其他适配逻辑
    }
}

在上述代码中,我们定义了一个目标接口 Target 和一个被适配类 Adaptee。适配器类 Adapter 持有一个 Adaptee 类的实例,并实现了 Target 接口。适配器类中的 request() 方法将客户端的请求转发给了被适配类的 specificRequest() 方法。

使用适配器

  💧以下是适配器模式的使用示例:

public class Client {
    public static void main(String[] args) {
        Adaptee adaptee = new Adaptee();
        Target adapter = new Adapter(adaptee);
        
        adapter.request();
    }
}

在上述代码中,我们创建了一个被适配对象 Adaptee 和一个适配器对象 Adapter。通过将被适配对象传递给适配器的构造函数,我们将被适配对象转换成客户端期望的接口。最后,通过适配器的 request() 方法,客户端可以调用被适配对象的功能。

总结

    适配器模式是一种有用的设计模式,可以在不改变现有接口的情况下实现不兼容接口之间的协作。通过适配器模式,我们可以将已有的类集成到新的接口中,引入第三方库或组件,并对现有的类库进行功能扩展或修改。


发表评论