适配器模式
使得原本由于接口不兼容而不能一起工作的类能够一起工作。适配器模式通过将一个类的接口转换成客户端希望的另一个接口,从而使原本接口不匹配的类可以合作。
利用多继承实现
#include <iostream>
// 旧接口
class OldInterface {
public:
virtual void oldRequest() {
std::cout << "Old Interface Request" << std::endl;
}
};
// 新接口
class NewInterface {
public:
virtual void newRequest() = 0;
};
// 适配器类,继承旧接口和新接口
class Adapter : public NewInterface, private OldInterface {
public:
void newRequest() override {
oldRequest();
}
};
int main() {
NewInterface* adapter = new Adapter();
adapter->newRequest(); // 输出:Old Interface Request
delete adapter;
return 0;
}
利用适配器类中包含一个旧接口的对象实现
#include <iostream>
// 旧接口
class OldInterface {
public:
void oldRequest() {
std::cout << "Old Interface Request" << std::endl;
}
};
// 新接口
class NewInterface {
public:
virtual void newRequest() = 0;
};
// 适配器类,通过组合旧接口的对象来实现适配
class Adapter : public NewInterface {
private:
OldInterface* oldInterface;
public:
Adapter(OldInterface* oldInterface) : oldInterface(oldInterface) {}
void newRequest() override {
oldInterface->oldRequest();
}
};
int main() {
OldInterface* oldInterface = new OldInterface();
NewInterface* adapter = new Adapter(oldInterface);
adapter->newRequest(); // 输出:Old Interface Request
delete adapter;
delete oldInterface;
return 0;
}