C++设计模式之Adapter模式详解
需积分: 9 68 浏览量
更新于2024-07-26
收藏 156KB DOC 举报
C++设计模式精简版
C++设计模式是软件开发中的一种重要概念,它提供了一种灵活的方式来解决软件设计中的问题。 Adapter模式是C++设计模式中的一种重要模式,它使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
一、Adapter模式的功能
Adapter模式的主要功能是将一个类的接口转换成客户希望的另外一个接口,解决两个已有接口之间不匹配的问题。这个模式使得原本由于接口不兼配而不能一起工作的那些类可以一起工作。
二、Adapter模式的结构图
Adapter模式的结构图可以分为两种:Class Adapter和Object Adapter。
(1)Class Adapter:
Class Adapter是通过继承Adaptee类和实现Target接口来实现Adapter的。这种方式可以将Adaptee类的接口转换成Target接口,从而使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
(2)Object Adapter:
Object Adapter是通过组合Adaptee对象和实现Target接口来实现Adapter的。这种方式可以将Adaptee对象的接口转换成Target接口,从而使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
三、Adapter模式的实现
学习设计模式的重点是学习每种模式的思想,而不应拘泥于它的某种具体结构图和实现。因为模式是灵活的,其实现可以是千变万化的,只是所谓万变不离其宗。在STL中大量运用了Adapter模式,象function adapter、iterator adapter,它们与这里说的Adapter结构并不一样,但思想是一样的。
四、Adapter模式的示例代码
(1)Class Adapter:
namespace DesignPattern_Adapter {
class Adaptee {
public:
void SpecialRequest() {}
};
class Target {
public:
virtual void Request() = 0;
};
class Adapter : public Target, private Adaptee {
public:
virtual void Request() { SpecialRequest(); }
};
}
客户端代码:
{
using namespace DesignPattern_Adapter;
Target* p = new Adapter();
p->Request(); // 实际上调用的是Adaptee::SpecialRequest()
}
(2)Object Adapter:
namespace DesignPattern_Adapter {
class Adaptee {
public:
void SpecialRequest() {}
};
class Target {
public:
virtual void Request() = 0;
};
class Adapter : public Target {
private:
Adaptee* adaptee;
public:
Adapter(Adaptee* a) : adaptee(a) {}
virtual void Request() { adaptee->SpecialRequest(); }
};
}
客户端代码:
{
using namespace DesignPattern_Adapter;
Adaptee* a = new Adaptee();
Target* p = new Adapter(a);
p->Request(); // 实际上调用的是Adaptee::SpecialRequest()
}
Adapter模式是一种重要的设计模式,它使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。它的实现可以是千变万化的,但思想是一样的。
2011-05-31 上传
2018-07-19 上传
2008-11-29 上传
2023-09-19 上传
2023-10-18 上传
2023-05-17 上传
2023-05-18 上传
2023-05-17 上传
2023-10-17 上传
ERICSAP
- 粉丝: 0
- 资源: 2
最新资源
- 新型智能电加热器:触摸感应与自动温控技术
- 社区物流信息管理系统的毕业设计实现
- VB门诊管理系统设计与实现(附论文与源代码)
- 剪叉式高空作业平台稳定性研究与创新设计
- DAMA CDGA考试必备:真题模拟及章节重点解析
- TaskExplorer:全新升级的系统监控与任务管理工具
- 新型碎纸机进纸间隙调整技术解析
- 有腿移动机器人动作教学与技术存储介质的研究
- 基于遗传算法优化的RBF神经网络分析工具
- Visual Basic入门教程完整版PDF下载
- 海洋岸滩保洁与垃圾清运服务招标文件公示
- 触摸屏测量仪器与粘度测定方法
- PSO多目标优化问题求解代码详解
- 有机硅组合物及差异剥离纸或膜技术分析
- Win10快速关机技巧:去除关机阻止功能
- 创新打印机设计:速释打印头与压纸辊安装拆卸便捷性