C++适配器模式
意图
将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
适用性
- 你想使用一个已经存在的类,而它的接口不符合你的需求
- 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作
- (仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化已匹配它们的接口。对象适配器可以适配它的父类接口
示意性代码
#include <iostream>
using namespace std;
// 目标: 发动机
class Motor {
public:
virtual void drive() = 0;
};
// 适配者1: 电能发动机
class ElectricMotor {
public:
void electricDrive() {
cout << "电能发动机驱动汽车!" << endl;
}
};
// 适配者2: 光能发动机
class OpticalMotor {
public:
void opticalDrive() {
cout << "光能发动机驱动汽车!" << endl;
}
};
// 电能适配器
class ElectricAdapter : public Motor {
public:
ElectricAdapter() {
emotor = new ElectricMotor();
}
~ElectricAdapter() {
delete emotor;
}
void drive() override {
emotor->electricDrive();
}
private:
ElectricMotor* emotor;
};
// 光能适配器
class OpticalAdapter : public Motor {
public:
OpticalAdapter() {
omotor = new OpticalMotor();
}
~OpticalAdapter() {
delete omotor;
}
void drive() override {
omotor->opticalDrive();
}
private:
OpticalMotor* omotor;
};
int main() {
Motor* motor = new ElectricAdapter();
motor->drive();
}
参考
本文作者:岁月飞扬
本文链接:https://www.cnblogs.com/jerry-1015/p/16523560.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步