microwind/ai-skills/adapter-pattern
Claude Code and agent skill by microwind/ai-skills
- community
Checking that the SKILL.md file is still in the repository.
将一个类的接口转换为客户端期望的另一个接口,解决不兼容问题。
Install
npx vskill@latest install microwind/ai-skills/adapter-patternSKILL.md
适配器模式 (Adapter Pattern)
核心概念
Adapter是一种结构型设计模式,用于将一个不兼容的类的接口转换为客户端期望的接口。适配器充当"翻译"角色,使得原本无法协同工作的对象可以一起工作。
核心原则:
- 解决接口不兼容问题
- 无需修改原有接口即可集成新对象
- 促进代码复用,延长类的生命周期
- 支持第三方库的集成
适配方式:
- 类适配 (Class Adapter) - 通过继承实现
- 对象适配 (Object Adapter) - 通过组合实现 ⭐ 推荐
何时使用
始终使用:
- 需要使用第三方库但接口不兼容
- 旧系统与新系统集成
- 多个子系统接口不统一
- 希望不修改原有代码的情况下扩展功能
触发短语:
- "这个库的API不适配我们的系统"
- "需要集成遗留系统,但接口完全不同"
- "期望一个统一的接口来操作不同的实现"
典型场景:
| 场景 | 需适配的 | 目标接口 | 适配器 | |
|---|---|---|---|---|
| 支付网关整合 | Alipay, WeChat SDK | PaymentGateway | AlipayAdapter | |
| 日期处理 | java.util.Date, LocalDateTime | DateConverter | DateAdapter | |
| 数据库驱动 | MySQL, PostgreSQL | JdbcConnection | DbAdapter | |
| UI组件库 | 第三方组件 | 内部UI接口 | ComponentAdapter |
4个实现方法
方法1: 对象适配器 (Object Adapter) ⭐推荐
通过组合原对象,适配其接口到目标接口。
优点: 灵活,不修改原类,可适配多个接口 缺点: 需要包装对象
方法2: 类适配器 (Class Adapter)
通过继承原类来适配。
优点: 简单直接 缺点: 受限于Java单继承,不够灵活
方法3: 双向适配器 (Two-Way Adapter)
同时适配两个不兼容的接口。
方法4: 装饰改进的适配器
在适配的同时添加额外功能。
常见问题与解决方案
❌ 问题1: 适配器性能开销
症状: 频繁调用适配器,性能下降。
根本原因: 每次调用都经过一层包装,特别是双适配。
解决方案:
❌ 问题2: 接口不完全兼容
症状: 适配器无法完整适配所有功能。
根本原因: 被适配类功能集合与目标接口功能集合不匹配。
解决方案:
❌ 问题3: 第三方库版本变更导致适配器失效
症状: 升级第三方库后,适配器报错。
根本原因: 适配器强耦合于特定版本的第三方库。
解决方案:
❌ 问题4: 多个不兼容接口混合导致混乱
症状: 系统中混用不同的支付接口,代码难以维护。
根本原因: 缺陷统一的适配策略。
解决方案:
类适配 vs 对象适配对比
| 方面 | 类适配 | 对象适配 | |
|---|---|---|---|
| 实现方式 | 继承 | 组合 | |
| 灵活性 | 低 (单一父类) | 高 | |
| 多适配 | 不支持 | 支持 | |
| 性能 | 略好 | 略差 | |
| 推荐度 | ⭐⭐ | ⭐⭐⭐⭐⭐ |
最佳实践
✅ 优先对象适配 - 灵活性更好 ✅ 隔离第三方库 - 通过适配器屏蔽变化 ✅ 单一职责 - 适配器只负责接口转换 ✅ 缓存策略 - 高频调用时缓存适配结果 ✅ 版本管理 - 支持多版本第三方库 ✅ 异常处理 - 完整的错误处理和日志
何时避免
❌ 简单的接口转换可以直接修改源类 ❌ 不兼容问题源于设计缺陷,应该重构而非适配 ❌ 过度适配导致代码复杂度增加
真实案例
案例1: 支付网关整合
不同支付商 (支付宝、微信、Stripe) 接口完全不同,使用适配器统一为内部接口。
案例2: 日期处理库
java.util.Date 与 java.time.LocalDateTime 接口不兼容,适配器转换。
案例3: 旧系统集成
集成20年前的遗留系统,现代系统与之通信需要适配器转换。
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingdesign-patterns/adapter-pattern/SKILL.md
Popularity
- Repository stars
- 51
- Repository forks
- 13
- 7-day trend score
- 20
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/microwind/ai-skills/adapter-pattern)