在C++中,我们可以使用C++的特性(如模板、继承、智能指针等)来设计一个灵活且类型安全的工厂模式
首先,我们创建一个基类 Product
和几个派生类,这些派生类将代表我们要在工厂中创建的对象。
#include<iostream>
#include<memory>
#include<string>
// 基类 Product
class Product {
public:
virtual void use() const = 0;
virtual ~Product() = default;
};
// 派生类 ProductA
class ProductA : public Product {
public:
void use() const override {
std::cout << "Using ProductA"<< std::endl;
}
};
// 派生类 ProductB
class ProductB : public Product {
public:
void use() const override {
std::cout << "Using ProductB"<< std::endl;
}
};
接下来,我们创建一个工厂类 Factory
,它将负责根据输入参数创建不同类型的 Product
对象。为了实现这一点,我们可以使用模板和智能指针。
// 工厂类 Factory
class Factory {
public:
template<typename T>
static std::unique_ptr<Product> create() {
return std::make_unique<T>();
}
};
现在,我们可以使用 Factory
类来创建不同类型的 Product
对象。
int main() {
// 创建 ProductA 对象
auto productA = Factory::create<ProductA>();
productA->use();
// 创建 ProductB 对象
auto productB = Factory::create<ProductB>();
productB->use();
return 0;
}
这个例子展示了如何使用C++特性(如模板和智能指针)来设计一个简单且类型安全的工厂模式。当然,这只是一个基本示例,实际应用中的工厂模式可能会更加复杂。