C++ 接口设计模式示例:耳机接口转换

本文将通过一个简单的 C++ 示例来展示如何使用接口设计模式实现耳机不同接口之间的转换。

首先,我们定义一个抽象接口类 Interface,包含 playpausestop 三个纯虚函数,分别代表播放、暂停和停止操作:

class Interface {
public:
    virtual void play() = 0;
    virtual void pause() = 0;
    virtual void stop() = 0;
};

接下来,我们需要创建具体的接口类,分别代表 3.5mm 接口、2.5mm 接口、USB Type-C 接口和 lighting 接口:

class ThreePointFiveInterface : public Interface {
public:
    void play() override {
        // 实现 3.5mm 接口的播放方法
    }
    void pause() override {
        // 实现 3.5mm 接口的暂停方法
    }
    void stop() override {
        // 实现 3.5mm 接口的停止方法
    }
};

class TwoPointFiveInterface : public Interface {
public:
    void play() override {
        // 实现 2.5mm 接口的播放方法
    }
    void pause() override {
        // 实现 2.5mm 接口的暂停方法
    }
    void stop() override {
        // 实现 2.5mm 接口的停止方法
    }
};

class USBTypeCInterface : public Interface {
public:
    void play() override {
        // 实现 USB Type-C 接口的播放方法
    }
    void pause() override {
        // 实现 USB Type-C 接口的暂停方法
    }
    void stop() override {
        // 实现 USB Type-C 接口的停止方法
    }
};

class LightingInterface : public Interface {
public:
    void play() override {
        // 实现 lighting 接口的播放方法
    }
    void pause() override {
        // 实现 lighting 接口的暂停方法
    }
    void stop() override {
        // 实现 lighting 接口的停止方法
    }
};

最后,我们需要创建一个耳机类,用于实现接口的转换:

class Headphone {
private:
    Interface* interface;
public:
    void setInterface(Interface* i) {
        interface = i;
    }
    void play() {
        interface->play();
    }
    void pause() {
        interface->pause();
    }
    void stop() {
        interface->stop();
    }
};

这样,我们就可以使用耳机类来实现不同接口之间的转换:

int main() {
    Headphone headphone;
    ThreePointFiveInterface threePointFiveInterface;
    TwoPointFiveInterface twoPointFiveInterface;
    USBTypeCInterface usbTypeCInterface;
    LightingInterface lightingInterface;

    // 将 3.5mm 接口转换为 2.5mm 接口
    headphone.setInterface(&threePointFiveInterface);
    headphone.play();
    headphone.pause();
    headphone.stop();

    // 将 2.5mm 接口转换为 USB Type-C 接口
    headphone.setInterface(&twoPointFiveInterface);
    headphone.play();
    headphone.pause();
    headphone.stop();

    // 将 USB Type-C 接口转换为 lighting 接口
    headphone.setInterface(&usbTypeCInterface);
    headphone.play();
    headphone.pause();
    headphone.stop();

    // 将 lighting 接口转换为 3.5mm 接口
    headphone.setInterface(&lightingInterface);
    headphone.play();
    headphone.pause();
    headphone.stop();
}

注意事项:

  1. 接口类中的函数都是纯虚函数,必须在具体的接口类中实现。
  2. 耳机类中的接口指针必须在使用前设置,否则会出现空指针异常。
  3. 转换接口时,需要先创建具体的接口类对象,再将其传递给耳机类的接口指针。
  4. 转换接口时,需要保证接口之间的兼容性,否则可能会出现不可预期的错误。

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

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