/** * @name 工厂方法模式 * @brief: 将对象创建委托给子类 * @note 场景:框架需要扩展多种类型对象(如 UI 控件、游戏角色) */ class Product { public: virtual void use() = 0; }; class ConcreteProductA : public Product { void use() override { /* 产品A的功能 */ } }; class Creator { public: virtual Product* createProduct() = 0; }; class ConcreteCreatorA : public Creator { Product* createProduct() override { return new ConcreteProductA(); } }; // 使用 int main() { Creator* creator = new ConcreteCreatorA(); Product* product = creator->createProduct(); product->use(); return 0; }