首先定义一个接口类,包含一个纯虚函数:

class HeadphoneInterface {
public:
    virtual void connect() = 0;
};

然后定义三个具体的接口类,分别对应3.5mm接口、2.5mm接口和USB Type-c接口:

class Headphone3_5mm : public HeadphoneInterface {
public:
    void connect() override {
        std::cout << "Connect to 3.5mm interface." << std::endl;
    }
};

class Headphone2_5mm : public HeadphoneInterface {
public:
    void connect() override {
        std::cout << "Connect to 2.5mm interface." << std::endl;
    }
};

class HeadphoneTypeC : public HeadphoneInterface {
public:
    void connect() override {
        std::cout << "Connect to Type-c interface." << std::endl;
    }
};

最后定义一个转接器类,包含一个成员变量指向接口类,以及一个函数用于切换接口:

class HeadphoneAdapter {
private:
    HeadphoneInterface* interface;
public:
    HeadphoneAdapter(HeadphoneInterface* i) : interface(i) {}
    void switchInterface(HeadphoneInterface* i) {
        interface = i;
    }
    void connect() {
        interface->connect();
    }
};

使用示例:

int main() {
    Headphone3_5mm h1;
    Headphone2_5mm h2;
    HeadphoneTypeC h3;

    HeadphoneAdapter adapter(&h1);
    adapter.connect(); // Connect to 3.5mm interface.

    adapter.switchInterface(&h2);
    adapter.connect(); // Connect to 2.5mm interface.

    adapter.switchInterface(&h3);
    adapter.connect(); // Connect to Type-c interface.

    return 0;
}
``

原文地址: https://www.cveoy.top/t/topic/hjjt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录