35mm接口及25mm接口usb type-c接口lighting接口。分别用类模式和对象模式实现耳机接口的转换c++代码和类图
类模式实现:
class HeadphoneInterface {
public:
virtual void playMusic() = 0;
};
class ThreePointFiveMMInterface : public HeadphoneInterface {
public:
void playMusic() override {
std::cout << "Playing music through 3.5mm interface." << std::endl;
}
};
class TwoPointFiveMMInterface : public HeadphoneInterface {
public:
void playMusic() override {
std::cout << "Playing music through 2.5mm interface." << std::endl;
}
};
class USBTypeCInterface : public HeadphoneInterface {
public:
void playMusic() override {
std::cout << "Playing music through USB Type-C interface." << std::endl;
}
};
class LightingInterface : public HeadphoneInterface {
public:
void playMusic() override {
std::cout << "Playing music through Lighting interface." << std::endl;
}
};
class HeadphoneAdapter {
public:
virtual HeadphoneInterface* getInterface() = 0;
};
class ThreePointFiveMMAdapter : public HeadphoneAdapter {
public:
HeadphoneInterface* getInterface() override {
return new ThreePointFiveMMInterface();
}
};
class TwoPointFiveMMAdapter : public HeadphoneAdapter {
public:
HeadphoneInterface* getInterface() override {
return new TwoPointFiveMMInterface();
}
};
class USBTypeCAdapter : public HeadphoneAdapter {
public:
HeadphoneInterface* getInterface() override {
return new USBTypeCInterface();
}
};
class LightingAdapter : public HeadphoneAdapter {
public:
HeadphoneInterface* getInterface() override {
return new LightingInterface();
}
};
类图如下:

对象模式实现:
class HeadphoneInterface {
public:
virtual void playMusic() = 0;
};
class ThreePointFiveMMInterface : public HeadphoneInterface {
public:
void playMusic() override {
std::cout << "Playing music through 3.5mm interface." << std::endl;
}
};
class TwoPointFiveMMInterface : public HeadphoneInterface {
public:
void playMusic() override {
std::cout << "Playing music through 2.5mm interface." << std::endl;
}
};
class USBTypeCInterface : public HeadphoneInterface {
public:
void playMusic() override {
std::cout << "Playing music through USB Type-C interface." << std::endl;
}
};
class LightingInterface : public HeadphoneInterface {
public:
void playMusic() override {
std::cout << "Playing music through Lighting interface." << std::endl;
}
};
class HeadphoneAdapter {
private:
HeadphoneInterface* interface;
public:
HeadphoneAdapter(HeadphoneInterface* interface) : interface(interface) {}
void playMusic() {
interface->playMusic();
}
};
int main() {
HeadphoneInterface* interface = new ThreePointFiveMMInterface();
HeadphoneAdapter* adapter = new HeadphoneAdapter(interface);
adapter->playMusic();
delete adapter;
delete interface;
return 0;
}
类图如下:
![object_diagram](object_diagram.png
原文地址: https://www.cveoy.top/t/topic/hjkY 著作权归作者所有。请勿转载和采集!