在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++工厂模式创建了不同类型的对象。当需要添加新的产品类型时,只需创建新的派生类并在工厂类中添加相应的创建逻辑即可。