适配器模式(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
相关推荐
心祭丫丫1 小时前
【每天一个 Python 小案例17】Python 实现通讯录露天赏雪1 小时前
第3篇:Sentinel熔断降级实战:大模型接口抖动时的服务兜底方案yeccheng4 小时前
MySQL 索引超详解:从底层 B+ 树到面试高频考点联犀4 小时前
纯 Go 的 CAD 开源库 go-cad:直接解析 DWG/DXF,现在也能导出 PDFzjxtxdy4 小时前
C++面向对象程序开发-类与对象淡海水6 小时前
09-04-内存-Unity原生对象生命周期qq_406981036 小时前
c++拷贝构造函数爱喝雪碧的可乐7 小时前
MATLAB是2的10次方啊9 小时前
设计模式与生活⑭:一栋楼,共用一份热H.莓飛9 小时前
【C++】【STL】vector_OJ题