23种设计模式【结构型模式】详细介绍之【适配器模式】

设计模式的分类和应用场景总结

可以查看专栏设计模式:设计模式

适配器模式

在软件设计模式中,适配器模式是一种常见且重要的结构型模式。它用于将一个类的接口转换为客户端期望的另一个接口,从而使原本由于接口不兼容而无法一起工作的类可以协同工作。

1. 概述

适配器模式通过在不修改现有代码的情况下,使现有类与新接口兼容。这在需要集成第三方库或旧系统时特别有用。

2. 实现方式

适配器模式有两种主要实现方式:类适配器和对象适配器。

2.1 类适配器

通过多重继承实现适配器,使适配器类继承自一个具体类和一个接口。

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

// 现有类
class Adaptee {
    void specificRequest() {
        System.out.println("特殊请求");
    }
}

// 类适配器
class ClassAdapter extends Adaptee implements Target {
    public void request() {
        specificRequest();
    }
}

// 使用类适配器
public class Client {
    public static void main(String[] args) {
        Target target = new ClassAdapter();
        target.request();
    }
}

2.2 对象适配器

通过组合方式实现适配器,适配器类持有现有类的实例。

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

// 现有类
class Adaptee {
    void specificRequest() {
        System.out.println("特殊请求");
    }
}

// 对象适配器
class ObjectAdapter implements Target {
    private Adaptee adaptee;

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

    public void request() {
        adaptee.specificRequest();
    }
}

// 使用对象适配器
public class Client {
    public static void main(String[] args) {
        Adaptee adaptee = new Adaptee();
        Target target = new ObjectAdapter(adaptee);
        target.request();
    }
}

3. 适配器模式的优缺点

3.1 优点

  • 提高类的复用性: 适配器模式使得原本不兼容的类能够协同工作,提高了类的复用性。
  • 灵活性和扩展性: 可以在不修改现有代码的情况下引入新功能。

3.2 缺点

  • 增加系统复杂性: 适配器模式会增加系统的复杂性,因为需要增加一层新的适配器。

4. 使用场景

适配器模式适用于以下场景:

  • 已有类的接口与需求不匹配: 需要使用现有类,但其接口与需求不一致时。
  • 想要封装第三方库或旧系统: 需要在新系统中使用第三方库或旧系统的类,而它们的接口不符合当前系统设计。

5. 总结

适配器模式是一种简单而有效的结构型模式,能够将不兼容的接口结合在一起,使得系统更灵活。通过适配器模式,可以在不修改现有代码的情况下实现接口的转换,提高了代码的复用性和可维护性。

版权声明:
原创博主:牛哄哄的柯南
博主原文链接:https://keafmd.blog.csdn.net/
个人博客链接:https://www.keafmd.top/

看完如果对你有帮助,感谢点击下面的点赞支持!
[哈哈][抱拳]

在这里插入图片描述
加油!

共同努力!

Keafmd

感谢支持牛哄哄的柯南,期待你的三连+关注~~

keep accumulate for my dream【共勉】

                                                       ↓   ↓   ↓   ↓   ↓   ↓  

相关推荐

  1. 23设计模式结构模式

    2024-07-11 21:52:03       25 阅读
  2. 设计模式_结构模式_适配器模式

    2024-07-11 21:52:03       45 阅读
  3. 设计模式结构模式适配器模式

    2024-07-11 21:52:03       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 21:52:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 21:52:03       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 21:52:03       58 阅读
  4. Python语言-面向对象

    2024-07-11 21:52:03       69 阅读

热门阅读

  1. css中伪元素 :: before的用法

    2024-07-11 21:52:03       24 阅读
  2. 机器学习深度学习用得到的数据集

    2024-07-11 21:52:03       29 阅读
  3. 设计模式:单例模式

    2024-07-11 21:52:03       22 阅读
  4. BP神经网络与反向传播算法在深度学习中的应用

    2024-07-11 21:52:03       23 阅读
  5. Ubuntu 打开或关闭界面

    2024-07-11 21:52:03       18 阅读
  6. c++状态机实现示例

    2024-07-11 21:52:03       24 阅读
  7. Mac上pyenv的安装及使用

    2024-07-11 21:52:03       18 阅读
  8. 【C++】智能指针

    2024-07-11 21:52:03       24 阅读
  9. 【TS】Typescript 的类

    2024-07-11 21:52:03       23 阅读