跳到正文
Joeplover
学习笔记·2026-06-20·约 2 分钟阅读

适配器模式(Adapter Pattern)详解

接口不兼容?加一层适配器,不改业务代码。含与策略/观察者/工厂模式的对比。

适配器模式

DAY02b — 适配器模式(Adapter Pattern)

相关笔记:[[DAY02-观察者模式]] | [[DAY01c-策略模式]] 相关索引:[[索引-设计模式]] | [[索引-Python]]

一句话

接口不兼容?加一层适配器,不改业务代码。

什么时候需要

你的代码:  OldPayment.pay(order_id, amount)   ← 10 处调用
第三方新库:NewPayment.process(txn_id, money)  ← 接口不一样

不改 10 处,只写 1 个适配器:
NewPaymentAdapter.pay(order_id, amount) {
    内部调用 NewPayment.process(...)
}

适配器做了什么

业务代码 (OrderService)
    │ 只认识 pay(order_id, amount)
    ▼
适配器 (NewPaymentAdapter)
    │ 把 pay → 翻译成 process
    ▼
第三方库 (NewPayment.process(txn_id, money))

和之前模式的区别

模式解决什么问题
策略模式多个算法选一个
观察者模式做完 A 通知 B、C、D
工厂模式对象创建统一管理
适配器模式接口不兼容,加一层翻译

额外收获:依赖注入

适配器模式通常和依赖注入一起用:

# bad:业务代码自己 new 支付
class OrderService:
    def checkout(self, ...):
        payment = OldPayment()  # 耦合死了

# good:支付从外面传进来
class OrderService:
    def __init__(self, payment: PaymentGateway):
        self._payment = payment  # 解耦!

好处:测试时可以传 FakePayment,不用真付钱。

代码文件

  • Day01.code/adapter_exercise.py — 有问题的代码
  • Day01.code/adapter_pattern.py — 适配器模式改造版

当前进度

阶段一:■■■■□□□□□□  4/10  ✅ 适配器模式