在C++中,工廠模式是一種設計模式,用于根據輸入參數的不同創建不同類型的對象。這樣可以將對象的創建過程與使用過程分離,提高代碼的可擴展性和可維護性。
下面是一個使用C++工廠模式創建對象的示例:
#include<iostream>
#include<string>
// 基類
class Product {
public:
virtual void use() = 0;
};
// 派生類A
class ConcreteProductA : public Product {
public:
void use() override {
std::cout << "Using ConcreteProductA"<< std::endl;
}
};
// 派生類B
class ConcreteProductB : public Product {
public:
void use() override {
std::cout << "Using ConcreteProductB"<< std::endl;
}
};
class Factory {
public:
static Product* createProduct(const std::string& type) {
if (type == "A") {
return new ConcreteProductA();
} else if (type == "B") {
return new ConcreteProductB();
} else {
return nullptr;
}
}
};
int main() {
// 創建對象
Product* productA = Factory::createProduct("A");
Product* productB = Factory::createProduct("B");
// 使用對象
productA->use();
productB->use();
// 釋放內存
delete productA;
delete productB;
return 0;
}
運行上述代碼,將會輸出:
Using ConcreteProductA
Using ConcreteProductB
這樣,我們就成功地使用C++工廠模式創建了不同類型的對象。當需要添加新的產品類型時,只需創建新的派生類并在工廠類中添加相應的創建邏輯即可。