在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++特性(如模板和智能指針)來設計一個簡單且類型安全的工廠模式。當然,這只是一個基本示例,實際應用中的工廠模式可能會更加復雜。