在C++中,工廠模式是一種設(shè)計模式,用于根據(jù)輸入?yún)?shù)的不同創(chuàng)建不同類型的對象。這樣可以將對象的創(chuàng)建過程與使用過程分離,提高代碼的可擴(kuò)展性和可維護(hù)性。
下面是一個使用C++工廠模式創(chuàng)建對象的示例:
#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() {
// 創(chuàng)建對象
Product* productA = Factory::createProduct("A");
Product* productB = Factory::createProduct("B");
// 使用對象
productA->use();
productB->use();
// 釋放內(nèi)存
delete productA;
delete productB;
return 0;
}
運(yùn)行上述代碼,將會輸出:
Using ConcreteProductA
Using ConcreteProductB
這樣,我們就成功地使用C++工廠模式創(chuàng)建了不同類型的對象。當(dāng)需要添加新的產(chǎn)品類型時,只需創(chuàng)建新的派生類并在工廠類中添加相應(yīng)的創(chuàng)建邏輯即可。