适配器模式(Adapter)
适配器模式(Adapter)
适配器模式(Adapter)[Wrapper]
意图:将类的一个接口转换成用户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的类可以一起工作。
应用:将图形类接口适配到用户界面组件类中。
模式结构:
心得:
适配器模式一般应用在具有相似接口可复用的条件下。目标接口(Target)是需要适配器的实现的接口(输出),被适配的接口(Adaptee)拥有与目标接口不兼容的接口,适配器需要根据功能逻辑将Adaptee的接口“映射”Target接口上。使用多继承实现的方式成为类适配器,它通过公有继承Target接口,私有继承Adaptee接口实现。而针对对象的适配器稍显灵活,因此这里重点介绍对象适配器。适配器(Adapter)组合了Adaptee接口,使用函数调用的方式产生兼容的Target接口实现。
举例:
按照图中的设计类图,我们用C++实现一个简单的适配器:
//目标接口
class Target
{
public:
virtual void request()=0;
virtual ~Target(){}
};
//被适配的接口
class Adaptee
{
public:
virtual void specificRequest()
{
cout<<"特殊的接口"<<endl;
}
};
//适配器
class Adapter:public Target
{
Adaptee *adaptee;
public:
Adapter(Adaptee*ad):adaptee(ad){}
virtual void request()
{
adaptee->specificRequest();//适配请求
}
virtual ~Adapter()
{
delete adaptee;
}
};
class Target
{
public:
virtual void request()=0;
virtual ~Target(){}
};
//被适配的接口
class Adaptee
{
public:
virtual void specificRequest()
{
cout<<"特殊的接口"<<endl;
}
};
//适配器
class Adapter:public Target
{
Adaptee *adaptee;
public:
Adapter(Adaptee*ad):adaptee(ad){}
virtual void request()
{
adaptee->specificRequest();//适配请求
}
virtual ~Adapter()
{
delete adaptee;
}
};
使用适配器就很简单了,只要将被适配的对象适配为所需的接口即可:
Target* target=new Adapter(new Adaptee);
target->request();//一般请求
delete target;
target->request();//一般请求
delete target;
参考文章:http://www.cnblogs.com/wangjq/archive/2012/07/09/2582485.html
作者:Florian
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则作者保留追究法律责任的权利。
若本文对你有所帮助,您的 关注 和 推荐 是我分享知识的动力!
若本文对你有所帮助,您的 关注 和 推荐 是我分享知识的动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)