/** * @name 抽象工厂模式 * @brief: 创建相关对象族 * @note 场景:跨平台UI组件库(如 Windows/macOS 按钮+文本框组合) */ class Button { public: virtual void render() = 0; }; class WinButton : public Button { public: void render() override {} }; class MacButton : public Button { public: void render() override {} }; class GUIFactory { public: virtual Button* createButton() = 0; }; class WinFactory : public GUIFactory { Button* createButton() override { return new WinButton(); } }; class MacFactory : public GUIFactory { Button* createButton() override { return new MacButton(); } }; int main() { // 使用 GUIFactory* factory = new WinFactory(); // 根据配置切换 Button* btn = factory->createButton(); btn->render(); return 0; }