适配器模式(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
相关推荐
kkeeper~4 小时前
0基础C语言积跬步之深入理解指针(5下)一直不明飞行4 小时前
Java的equals(),hashCode()应该在什么时候重写盲敲代码的阿豪5 小时前
Python 入门基础教程(爬虫前置版)多加点辣也没关系5 小时前
设计模式-解释器模式曹牧5 小时前
C# WinForms应用程序中展示JSON内容basketball6165 小时前
C++ 构造函数完全指南:从入门到进阶互联科技报5 小时前
2026超融合选型:Top5品牌与市场格局解读weixin199701080165 小时前
[特殊字符] 智能数据采集:数字化转型的“数据石油勘探队”(附Python实战源码)想唱rap6 小时前
IO多路转接之poll@杰克成6 小时前
Java学习30