C++适配器模式

意图

将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作

适用性

  • 你想使用一个已经存在的类,而它的接口不符合你的需求
  • 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作
  • (仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化已匹配它们的接口。对象适配器可以适配它的父类接口

示意性代码

#include <iostream>

using namespace std;

// 目标: 发动机
class Motor {
public:
    virtual void drive() = 0;
};

// 适配者1: 电能发动机
class ElectricMotor {
public:
    void electricDrive() {
        cout << "电能发动机驱动汽车!" << endl;
    }
};

// 适配者2: 光能发动机
class OpticalMotor {
public:
    void opticalDrive() {
        cout << "光能发动机驱动汽车!" << endl;
    }
};

// 电能适配器
class ElectricAdapter : public Motor {
public:
    ElectricAdapter() {
        emotor = new ElectricMotor();
    }
    ~ElectricAdapter() {
        delete emotor;
    }

    void drive() override {
        emotor->electricDrive();
    }

private:
    ElectricMotor* emotor;
};

// 光能适配器
class OpticalAdapter : public Motor {
public:
    OpticalAdapter() {
        omotor = new OpticalMotor();
    }
    ~OpticalAdapter() {
        delete omotor;
    }

    void drive() override {
        omotor->opticalDrive();
    }

private:
    OpticalMotor* omotor;
};


int main() {
    Motor* motor = new ElectricAdapter();
    motor->drive();
}

参考

  1. 适配器模式(Adapter模式)详解
posted @ 2022-07-27 09:35  岁月飞扬  阅读(301)  评论(0)    收藏  举报