• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
思想人生从关注生活开始
博客园    首页    新随笔    联系   管理    订阅  订阅

适配器设计模式Adapter Pattern-23种常用设计模式快速入门教程

1.适配器设计模式定义

  适配器设计模式是一种结构型设计模式,其目的是将一个类的接口转换成客户端所期望的另一个接口。适配器模式通常用于解决两个不兼容接口之间的问题。适配器模式包含三个角色:目标接口、适配器和被适配者。其中,目标接口是客户端所期望的接口,适配器是实现目标接口并将请求转发给被适配者的类,被适配者是需要被适配的类。

2.适配器设计模式优点:

  • 提高系统的复用性

          适配器模式可以让不兼容的接口协同工作,从而提高系统的复用性。

  • 增强系统的灵活性

          适配器模式可以在不改变原有代码的情况下,增加新的适配器类,从而增强系统的灵活性。

  • 提高代码的可读性

         适配器模式将不兼容的接口进行转换,使得代码更易于理解和维护。

3.适配器设计模式缺点:

  • 提高系统的复用性

          适配器模式可以让不兼容的接口协同工作,从而提高系统的复用性。

  • 增强系统的灵活性

          适配器模式可以在不改变原有代码的情况下,增加新的适配器类,从而增强系统的灵活性。

  • 提高代码的可读性

          适配器模式将不兼容的接口进行转换,使得代码更易于理解和维护。

4.适配器设计模式示例代码

传统设计模式讲解时使用的示例代码,大都采用与读者日常生活接解的业务系统没有多大关联关系。以致大部分读者无法做到学以致用,学完就忘记。本文采用使用日常生活中随处可见的产品相关业务来编写实现代码

假设我们正在开发一个电商平台,需要将旧的订单信息也存到新系统。但是,原来平台的订单接口与我们现在接口不兼容。我们可以使用适配器模式来解决这个问题。下面是一个基于Java的适配器模式示例代码:

// 目标接口
interface Order {
String getId();
double getTotal();
}
// 适配者类
class LegacyOrder {
private final String orderNumber;
private final double amount;
public LegacyOrder(String orderNumber, double amount) {
this.orderNumber = orderNumber;
this.amount = amount;
}
public String getOrderNumber() {
return this.orderNumber;
}
public double getOrderAmount() {
return this.amount;
}
}
// 适配器类
class OrderAdapter implements Order {
private final LegacyOrder legacyOrder;
public OrderAdapter(LegacyOrder legacyOrder) {
this.legacyOrder = legacyOrder;
}
@Override
public String getId() {
return legacyOrder.getOrderNumber();
}
@Override
public double getTotal() {
return legacyOrder.getOrderAmount();
}
}
// 客户端代码
public class AdapterDemo {
public static void main(String[] args) {
LegacyOrder legacyOrder = new LegacyOrder("123456", 45.67);
Order order = new OrderAdapter(legacyOrder);
System.out.println(order.getId()); // 输出:123456
System.out.println(order.getTotal()); // 输出:45.67
}
}

在这个示例中,我们有一个遗留的订单类 LegacyOrder,它具有 getOrderNumber 和 getOrderAmount 方法,但是我们需要将其转换成一个新的接口 Order,该接口具有 getId 和 getTotal 方法。我们创建了一个适配器类 OrderAdapter,它实现了新的接口 Order,并通过组合遗留的订单类 LegacyOrder 来实现新的接口的方法。客户端代码使用适配器类来创建一个新的订单对象,并调用其 getId 和 getTotal 方法。 适配器模式可以很好地解决两个不兼容接口之间的问题,并且可以使已有代码能够与新的代码更好地协同工作。但是,在使用适配器模式时,需要仔细考虑适配器类的设计和其对现有代码的影响。

posted @ 2023-03-07 11:35  JackYang  阅读(86)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3