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