适配器模式(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
相关推荐
samble10 分钟前
从零搭建工业控制系统(二十二):线程安全与并发控制江畔柳前堤16 分钟前
前台·中台·后台:2026年AI原生时代的架构全景图Figo_Cheung27 分钟前
Figo基于RNC理论的宇宙演化第七纪元猜想UIU1141 小时前
scanf与cout的误区:探究其内部的机制泡海椒1 小时前
JQuick-Curl 二次开发:自定义解析器、扩展点开发指南,如何把框架能力真正变成团队资产WWJA王文举2 小时前
FreeRTOS事件组和任务通知详解:为什么任务通知比队列更轻量?风云2 小时前
MiniLog 1.0 GA 发布:零分配、零依赖的 .NET 高性能日志框架wuyk5553 小时前
12.归并排序:分治思想的稳定排序算法吴声子夜歌3 小时前
ApacheCommons——commons-text(模板替换与文本算法)慧都小妮子3 小时前
C# 工程图纸数字化入库实战:Aspose.Imaging 自动抠图、多页 TIFF 合卷与坏页容错