工厂模式通过基类指针和多态实现对象创建,定义抽象产品类Product及具体类ConcreteProductA,使用智能指针管理生命周期,确保派生类实现use接口。

工厂模式是一种创建型设计模式,用于在不指定具体类的情况下创建对象。在C++中,通过基类指针和多态机制可以很好地实现工厂模式。下面介绍一个简单而实用的工厂模式实现方法。
首先定义一个抽象的产品基类,提供统一的接口。然后由具体的产品类继承并实现该接口。
示例代码:
class Product {
public:
virtual ~Product() = default;
virtual void use() const = 0;
};
class ConcreteProductA : public Product {
public:
void use() const override {
std::cout << "Using Product A\n";
}
};
class ConcreteProductB : public Product {
public:
void use() const override {
std::cout << "Using Product B\n";
}
};
工厂类提供一个创建对象的方法,根据输入参数决定实例化哪种具体产品。这种方式将对象创建逻辑集中管理,便于扩展和维护。
立即学习“C++免费学习笔记(深入)”;
示例代码:
enum class ProductType {
TYPE_A,
TYPE_B
};
class Factory {
public:
static std::unique_ptr<Product> createProduct(ProductType type) {
switch (type) {
case ProductType::TYPE_A:
return std::make_unique<ConcreteProductA>();
case ProductType::TYPE_B:
return std::make_unique<ConcreteProductB>();
default:
throw std::invalid_argument("Unknown product type");
}
}
};
客户端通过工厂接口获取所需对象,无需直接调用构造函数。这样解耦了对象创建与使用,提升了代码灵活性。
使用示例:
int main() {
auto productA = Factory::createProduct(ProductType::TYPE_A);
auto productB = Factory::createProduct(ProductType::TYPE_B);
productA->use(); // 输出: Using Product A
productB->use(); // 输出: Using Product B
return 0;
}
这种实现方式结构清晰,易于扩展。如果需要支持更多产品类型,只需新增派生类并在工厂中添加对应分支。基本上就这些,不复杂但容易忽略细节。
以上就是c++++怎么实现一个工厂模式_c++工厂模式实现方法的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号