设计模式之Adapter模式

在C++中,可以使用类继承和接口实现来实现适配器模式,将一个类的接口转换成客户希望的另外一个接口。Adapt 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// 目标接口
class Target {
public:
virtual void request() = 0;
};

// 适配者类
class Adaptee {
public:
void specificRequest() {
// ...
}
};

// 类适配器
class Adapter : public Target, private Adaptee {
public:
void request() override {
specificRequest();
}
};

int main() {
Target* target = new Adapter();
target->request();

return 0;
}

在上面的示例中,Target是目标接口,它定义了客户端代码所期望的方法。Adaptee是适配者类,它包含了客户端代码无法直接使用的方法。Adapter是适配器类,它继承了Target接口,并私有继承了Adaptee类。

Adapter类中,我们实现了request()方法,该方法调用了specificRequest()方法,这是Adaptee类中的方法。通过这种方式,我们可以将Adaptee类中的方法包装在Adapter类中,以便它们可以与Target接口一起工作。

main()函数中,我们创建了一个Adapter对象,并将其赋值给Target指针。然后,我们调用request()方法,该方法实际上调用了specificRequest()方法。由于Adapter类实现了Target接口,因此客户端代码可以使用Target接口来调用Adaptee类中的方法。