C++耳机接口类图与适配器模式详解
C++耳机接口类图与适配器模式详解
代码示例cpp#include #include
// 类模式class HeadphoneInterface {public: virtual void connect() const = 0;};
class Headphone3_5mm : public HeadphoneInterface {public: void connect() const override { std::cout << '3.5mm接口已连接' << std::endl; }};
class Headphone2_5mm : public HeadphoneInterface {public: void connect() const override { std::cout << '2.5mm接口已连接' << std::endl; }};
class USBTypeC : public HeadphoneInterface {public: void connect() const override { std::cout << 'USB Type-C接口已连接' << std::endl; }};
class Lighting : public HeadphoneInterface {public: void connect() const override { std::cout << 'lighting接口已连接' << std::endl; }};
// 对象模式class InterfaceConverter {public: void convert(const std::shared_ptr
int main() { // 类模式示例 Headphone3_5mm headphone3_5mm; USBTypeC usbTypeC; Lighting lighting;
std::cout << '类模式:' << std::endl; usbTypeC.connect(); lighting.connect();
// 对象模式示例 std::cout << '对象模式:' << std::endl; InterfaceConverter converter; std::shared_ptr<HeadphoneInterface> source = std::make_shared<Headphone3_5mm>(); std::shared_ptr<HeadphoneInterface> target = std::make_shared<USBTypeC>(); converter.convert(source, target);
return 0;}
类图
+----------------+ +---------------------+| HeadphoneInterface |<---------| Headphone3_5mm |+----------------+ +---------------------+| connect() const | | void connect() const |+----------------+ +---------------------+ ^ |+----------------+ +---------------------+| HeadphoneInterface |<---------| Headphone2_5mm |+----------------+ +---------------------+| connect() const | | void connect() const |+----------------+ +---------------------+ ^ |+----------------+ +---------------------+| HeadphoneInterface |<---------| USBTypeC |+----------------+ +---------------------+| connect() const | | void connect() const |+----------------+ +---------------------+ ^ |+----------------+ +---------------------+| HeadphoneInterface |<---------| Lighting |+----------------+ +---------------------+| connect() const | | void connect() const |+----------------+ +---------------------+ ^ |+-------------------+ +-------------------+| InterfaceConverter | | std::shared_ptr
代码解析
-
定义耳机接口抽象类
HeadphoneInterface: - 包含一个纯虚函数connect(),表示连接耳机。 -
实现具体耳机接口类: -
Headphone3_5mm,Headphone2_5mm,USBTypeC,Lighting分别代表不同的耳机接口类型,都继承自HeadphoneInterface并实现connect()函数。 -
定义接口转换器类
InterfaceConverter: - 包含一个convert()函数,接受源耳机接口和目标耳机接口作为参数,模拟接口转换的过程。 -
主函数
main(): - 演示了类模式和对象模式的使用方法,分别创建不同类型的耳机接口对象,并使用InterfaceConverter进行接口转换。
总结
本例通过模拟耳机接口的场景,展示了如何使用 C++ 实现简单的类图和适配器模式。 适配器模式可以将一个类的接口转换成客户端所期望的另一个接口,使得原本由于接口不兼容而不能一起工作的类可以一起工作。
原文地址: https://www.cveoy.top/t/topic/f0IF 著作权归作者所有。请勿转载和采集!