适配器模式是软件工程中的一种设计模式,它的目的是将一个类的接口转换成客户希望的另一个接口。这样可以让原本由于接口不兼容而不能在一起工作的类能够在一起工作。
适配器模式分为两种类型:对象适配器和类适配器。对象适配器使用组合的方式来适配接口,而类适配器使用继承的方式来适配接口。
适配器模式常用于以下场景:
当需要使用一个已有的类,但它的接口并不符合需要时,可以使用适配器模式将其接口转换成期望的接口。
当需要使用一些现有的子类,但是不能对每个子类进行改写或扩展时,可以使用适配器模式,将它们转换成符合期望接口的类。
当需要使用一些已有的类,但是它们的接口不兼容,不能在一起工作时,可以使用适配器模式将它们转换成兼容的接口,使它们能够在一起工作。
// 定义目标接口
class Target {
public:
virtual void Request() = 0;
};
// 定义适配者接口
class Adaptee {
public:
void SpecificRequest() {
// 特殊请求
}
};
// 对象适配器
class ObjectAdapter : public Target {
public:
ObjectAdapter(Adaptee* adaptee) : adaptee_(adaptee) {}
void Request() override {
adaptee_->SpecificRequest();
}
private:
Adaptee* adaptee_;
};
// 类适配器
class ClassAdapter : public Target, private Adaptee {
public:
void Request() override {
SpecificRequest();
}
};