7 适配器模式
适配器模式(Adaptor):将一个类的接口转换成客户希望的另一个接口。适配器让原本接口不兼容的类可以一起工作。
类似于我们日常生活中的电源适配器,提供了低压直流电和220V交流电之间的适配。
适配器有两种形式:对象适配器和类适配器。两者的类图分别如下:
对象适配器:
Adapter完成Target和Adaptee之间的适配,这里Client相当于笔记本,Target为低压直流电,Adaptee为220V交流电,Adapter为电源适配器。Adapter继承了Target,并与Adaptee关联。
再来看看类适配器是什么样的:
类适配器与对象适配器的区别在于类适配器使用了多继承,Adapter同时继承了Target和Adaptee。但是,C#、Java等语言都不支持多继承(c++支持)。这里也就不做学习了。
对象适配器的简单代码如下,适配器用来进行迭代器(Iterator)到枚举器(Enumerator)的转换,以便让Client可以正常使用Enumerator。

//Client public class Enumerator { public bool HasMoreElements() { return true; } public object NextElement() { return new object(); } } //Adaptee public class Iterator { public virtual bool HasNext() { return true; } public virtual object Next() { return new object(); } public virtual void Remove(int i) { } } //Adaptor public class EnumeratorIteratorAdaptor : Iterator { Enumerator enumerator; public EnumeratorIteratorAdaptor(Enumerator enumerator) { this.enumerator = enumerator; } public override bool HasNext() { return enumerator.HasMoreElements(); } public override object Next() { return enumerator.NextElement(); } public override void Remove(int i) { throw new Exception("不支持Remove()方法"); } }
.NET中的DataAdapter就是适配器。但适配器往往只是在实在没有办法的时候才使用,比如像复用旧的类,想使用第三方的类但又不愿跟随第三方的设计,即在双方都不容易修改为统一格式的情况下,再使用适配器。如果是自己设计两个类,当然是要直接设计成两者可以配合。
《大话设计模式》中还提到了扁鹊的故事,真是很好的例子:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具