适配器模式
一个适配器模式一般包含以下几个部分:
目标接口(Target):客户端期望的接口,该接口与现有的类库或第三方库的接口不兼容。
适配器(Adapter):将不兼容的接口转换成兼容的接口,实现了目标接口,并持有需要适配的对象的引用或指针。
需要适配的类(Adaptee):需要被适配的现有类,其接口与目标接口不兼容。
客户端(Client):调用目标接口来实现其业务逻辑的应用程序。
例子:
#include <iostream>
#include <string.h>
#include <unistd.h>
//假设我们有一个名为Target的接口,定义了一个request()方法:
class Target {
public:
virtual void request() = 0;
};
//我们还有一个名为oringe的类,它的接口不符合Target接口规范,但是它能完成我们需要的功能:
class Oringe {
public:
void specificRequest() {
std::cout << "Oringe specific request" << std::endl;
}
};
//我们使用适配器模式将oringe适配成符合Target接口规范的类Adapter:
class Adapter : public Target {
public:
void request() override {
oringe.specificRequest();
}
private:
Oringe oringe;
};
int main()
{
Target* target = new Adapter();
target->request(); // 调用适配后的oringe的specificRequest()方法
}