38 lines
816 B
C++
38 lines
816 B
C++
/**
|
||
* @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;
|
||
} |