C++ 接口设计模式示例:耳机接口转换
C++ 接口设计模式示例:耳机接口转换
本文将通过一个简单的 C++ 示例来展示如何使用接口设计模式实现耳机不同接口之间的转换。
首先,我们定义一个抽象接口类 Interface,包含 play、pause 和 stop 三个纯虚函数,分别代表播放、暂停和停止操作:
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();
}
注意事项:
- 接口类中的函数都是纯虚函数,必须在具体的接口类中实现。
- 耳机类中的接口指针必须在使用前设置,否则会出现空指针异常。
- 转换接口时,需要先创建具体的接口类对象,再将其传递给耳机类的接口指针。
- 转换接口时,需要保证接口之间的兼容性,否则可能会出现不可预期的错误。
原文地址: https://www.cveoy.top/t/topic/f0Jx 著作权归作者所有。请勿转载和采集!