适配器模式(Adapter Pattern)
概念:· 一种结构型设计模式;
· 目的是将一个类的接口转换为客户端所期望的接口,使原本不兼容的类可以协同工作;
UML结构:
+----------------+ | Target | <-- 客户端期望的接口 |----------------| | +Request() | +----------------+ ^ | implements | +----------------+ | Adapter | <-- 适配器 |----------------| | -adaptee: Adaptee | | +Request() | +----------------+ | +----------------+ | Adaptee | <-- 被适配者 |----------------| | +SpecificRequest() | +----------------+代码示例:
cs/// <summary> /// 客户端希望的接口(目标接口) /// </summary> public interface ITarget { void Request(); } /// <summary> /// 需要被适配的类 /// </summary> public class Adaptee { public void SpecificRequest() { Console.WriteLine("Adaptee: SpecificRequest called."); } } /// <summary> /// 适配器 /// </summary> public class Adapter : ITarget { private readonly Adaptee _adaptee; public Adapter(Adaptee adaptee) { this._adaptee = adaptee; } public void Request() { _adaptee.SpecificRequest(); } } /// <summary> /// 客户端 /// </summary> public class Client { public static void Main() { // 创建一个需要被适配的对象 Adaptee adaptee = new(); // 生成一个适配器对象,并注入被适配的对象 ITarget target = new Adapter(adaptee); // 调用统一接口 target.Request(); } }特点:
优点:· 可以让两个原本接口不兼容的 ;
· 符合开闭原则,无需修改已有的类的代码;
· 客户端透明调用 ,无需关心适配器的实现;
缺点:· 增加系统的复杂度:多了一层适配器;
· 适配器的数量可能会随着类的增加而增加;
· 过度使用可能会导致类层次的混乱 ;
适用场景:
· 系统希望使用现有类,但接口不符合需求;
· 需要将多个已有类统一接口 ,便于客户端调用;
· 希望通过封装改变类的接口而不改变原有类;
举例场景:
· 为旧版本只支持USB充电的手机适配一个Type-C接口,类似于转接头;
【设计模式】适配器模式
大飞pkz2025-09-26 15:35
相关推荐
2301_8166512212 分钟前
C++中的享元模式变体m0_5832031315 分钟前
C++中的访问者模式变体浅念-22 分钟前
C ++ 智能指针布谷歌23 分钟前
Fastjson枚举反序列化:当字符串不是枚举常量名时,会发生什么?虚幻如影23 分钟前
python识别验证码不染尘.23 分钟前
最小生成树算法ChineHe26 分钟前
基础篇003_Python基础语法程序员老乔30 分钟前
Java 新纪元 — JDK 25 + Spring Boot 4 全栈实战(二):Valhalla落地,值类型如何让电商DTO内存占用暴跌沉沙丶42 分钟前
关于matlab分析电流THD的一些探究和记录chase。44 分钟前
Python包构建工具完全指南:python -m build 使用详解