设计模式-适配器模式

适配器模式总结

适配器模式的主要功能就是将原有不兼容的接口或类的功能适配到目标接口中,使得原有的类可以在不修改其代码的情况下,与其他代码协同工作。

具体来说,适配器模式在以下情况下非常有用:

  1. 接口不兼容: 当系统中的两个接口不匹配时,引入适配器可以将一个接口的功能适配到另一个接口,使它们能够协同工作。
  2. 类的功能不符合需求: 当一个类的功能不符合当前系统的需求,但又不方便修改这个类时,通过适配器将其功能适配到目标接口,从而实现功能的复用。
  3. 旧代码和新代码整合: 在系统中引入新的代码时,为了与已有的旧代码协同工作,可能需要使用适配器将新代码适配到旧代码的接口或规范。

适配器模式提供了一种灵活的解决方案,允许不同的组件、接口或类在一起协同工作,而无需修改其原始实现。这种模式有助于保持代码的灵活性和可维护性,同时支持系统的演化和扩展。

适配器模式案例

假设有一个支付服务,支持多种支付方式,包括支付宝、微信、银联等。每个支付方式都有自己的支付接口,但是在系统中,我们希望通过一个统一的接口来进行支付。

首先,定义一个支付接口 PaymentProvider

public interface PaymentProvider {
    void pay(double amount);
}

然后,有一个具体的支付方式类 AlipayPayment

public class AlipayPayment {
    public void doAlipayPayment(double amount) {
        System.out.println("Alipay payment of amount: " + amount);
        // 具体的支付逻辑
    }
}

现在,我们希望将 AlipayPayment 适配到 PaymentProvider 接口,使得它能够被系统统一调用。

创建一个适配器类 AlipayAdapter

javaCopy code

public class AlipayAdapter implements PaymentProvider {

    private AlipayPayment alipayPayment;

    public AlipayAdapter(AlipayPayment alipayPayment) {
        this.alipayPayment = alipayPayment;
    }

    @Override
    public void pay(double amount) {
        // 调用 AlipayPayment 的支付方法
        alipayPayment.doAlipayPayment(amount);
    }
}

现在,通过适配器模式,我们可以将 AlipayPayment 适配到 PaymentProvider 接口,使得它能够通过统一的接口进行支付。

public class PaymentService {

    public void processPayment(PaymentProvider paymentProvider, double amount) {
        // 调用支付接口进行支付
        paymentProvider.pay(amount);
    }

    public static void main(String[] args) {
        PaymentService paymentService = new PaymentService();

        // 使用支付宝适配器
        AlipayPayment alipayPayment = new AlipayPayment();
        PaymentProvider alipayAdapter = new AlipayAdapter(alipayPayment);
        paymentService.processPayment(alipayAdapter, 100.0);

        // 其他支付方式也可以通过类似的适配器方式接入
    }
}

通过这个适配器,我们能够使用统一的 PaymentProvider 接口,调用不同支付方式的支付逻辑,实现了多种支付方式的统一接口,同时也方便了系统的扩展。这是适配器模式在支付服务中的简单应用场景。

相关推荐

  1. 设计模式适配器模式

    2024-03-12 00:52:04       46 阅读
  2. 设计模式——适配器模式

    2024-03-12 00:52:04       35 阅读
  3. 设计模式-适配器模式

    2024-03-12 00:52:04       31 阅读
  4. 设计模式——适配器模式

    2024-03-12 00:52:04       27 阅读
  5. 设计模式-适配器模式

    2024-03-12 00:52:04       28 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-12 00:52:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-12 00:52:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-12 00:52:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-12 00:52:04       20 阅读

热门阅读

  1. 热销商品-爬虫销量信息

    2024-03-12 00:52:04       19 阅读
  2. 【PICO 4教程】Unity3D中实现对PICO 4的手柄按键响应

    2024-03-12 00:52:04       19 阅读
  3. Linux: 调用接口

    2024-03-12 00:52:04       21 阅读
  4. 使用Docker安装Redis并运行

    2024-03-12 00:52:04       26 阅读
  5. springboot之异步任务、邮件任务、定时任务

    2024-03-12 00:52:04       20 阅读
  6. 记一次面试经历

    2024-03-12 00:52:04       24 阅读
  7. mysql的其他问题

    2024-03-12 00:52:04       21 阅读