适配器模式(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
相关推荐
南_山无梅落9 分钟前
9.Python3集合(set)增删改查和推导式sg_knight24 分钟前
拥抱未来:ECMAScript Modules (ESM) 深度解析程序喵大人39 分钟前
推荐个 C++ 练习平台阿里嘎多学长1 小时前
2025-12-16 GitHub 热点项目精选乂爻yiyao1 小时前
Java LTS版本重要升级特性对照表原来是好奇心1 小时前
深入Spring Boot源码(六):Actuator端点与监控机制深度解析过期动态2 小时前
JDBC高级篇:优化、封装与事务全流程指南WizLC2 小时前
【Java】各种IO流知识详解傻啦嘿哟2 小时前
实战:用Splash搞定JavaScript密集型网页渲染Knight_AL2 小时前
Java 线程池预热(Warm-up)实战:开启与不开启到底差多少?