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& source, const std::shared_ptr& target) { std::cout << '从 '; source->connect(); std::cout << ' 转换为 '; target->connect(); }};

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 |+-------------------+ +-------------------+| convert() | | connect() const |+-------------------+ +-------------------+

代码解析

  1. 定义耳机接口抽象类 HeadphoneInterface: - 包含一个纯虚函数 connect(),表示连接耳机。

  2. 实现具体耳机接口类: - Headphone3_5mm, Headphone2_5mm, USBTypeC, Lighting 分别代表不同的耳机接口类型,都继承自 HeadphoneInterface 并实现 connect() 函数。

  3. 定义接口转换器类 InterfaceConverter: - 包含一个 convert() 函数,接受源耳机接口和目标耳机接口作为参数,模拟接口转换的过程。

  4. 主函数 main(): - 演示了类模式和对象模式的使用方法,分别创建不同类型的耳机接口对象,并使用 InterfaceConverter 进行接口转换。

总结

本例通过模拟耳机接口的场景,展示了如何使用 C++ 实现简单的类图和适配器模式。 适配器模式可以将一个类的接口转换成客户端所期望的另一个接口,使得原本由于接口不兼容而不能一起工作的类可以一起工作。

C++耳机接口类图与适配器模式详解

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

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