1. 适配器模式的核心概念
在C++开发中,我们经常会遇到接口不兼容的问题。想象一下你从欧洲带回来的电器插头无法直接插入国内的插座——适配器模式就是解决这类问题的编程方案。作为结构型设计模式的代表,它能在不修改已有代码的前提下,让原本不兼容的类能够协同工作。
适配器模式的核心角色有三个:
- Target(目标接口):客户端期望使用的接口
- Adaptee(被适配者):需要被适配的现有类
- Adapter(适配器):将Adaptee接口转换为Target接口
实际开发中,大约70%的适配器使用场景出现在集成第三方库或维护遗留系统时。我曾在金融项目中遇到过一个典型案例:新采购的人脸识别SDK接口与旧系统的员工验证模块不兼容,正是通过适配器模式用200行代码解决了问题,避免了重写数万行的旧模块。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. C++适配器的两种实现方式
2.1 对象适配器(组合方式)
这是最常用的实现方式,通过组合关系将Adaptee作为Adapter的成员变量:
cpp复制class EuropeanPlug { // Adaptee
public:
void specificRequest() {
cout << "欧标插头插入" << endl;
}
};
class ChineseSocket { // Target
public:
virtual void request() = 0;
virtual ~ChineseSocket() = default;
};
class PlugAdapter : public ChineseSocket { // Adapter
private:
EuropeanPlug* plug;
public:
PlugAdapter(EuropeanPlug* p) : plug(p) {}
void request() override {
cout << "转换器工作中..." << endl;
plug->specificRequest();
cout << "已转换为国标插座" << endl;
}
};
关键点:
- 适配器继承目标接口
