简单的C++工厂模式

发布时间:2024年01月22日

项目中为什么要使用工厂模式呢?

  1. 降低耦合度:工厂模式将对象的创建和使用分离,降低了系统的耦合度,使代码更加清晰和易于维护。
  2. 提高可扩展性:如果需要添加新的产品,只需要扩展工厂类,而不需要修改原有的代码,这使得系统更加灵活和可扩展。
  3. 集中管理对象创建:工厂模式将对象的创建集中到一个工厂类中,方便对对象的创建进行集中管理,避免了重复的代码和资源浪费。
  4. 简化客户端代码:使用工厂模式可以简化客户端的代码,客户端只需要调用工厂方法即可获得所需的对象,无需了解对象的创建细节。
  5. 提供了一种创建对象的最佳方式:工厂模式提供了一种创建对象的最佳方式,使得对象的创建更加灵活和可维护。

?

#include <iostream>  
#include <string>  
  
class Product {  
public:  
    virtual void use() = 0;  
};  
  
class ConcreteProduct1 : public Product {  
public:  
    void use() override {  
        std::cout << "Using ConcreteProduct1." << std::endl;  
    }  
};  
  
class ConcreteProduct2 : public Product {  
public:  
    void use() override {  
        std::cout << "Using ConcreteProduct2." << std::endl;  
    }  
};  
  
class Factory {  
public:  
    virtual Product* createProduct(const std::string& type) = 0;  
};  
  
class ConcreteFactory : public Factory {  
public:  
    Product* createProduct(const std::string& type) override {  
        if (type == "type1") {  
            return new ConcreteProduct1();  
        } else if (type == "type2") {  
            return new ConcreteProduct2();  
        } else {  
            throw std::invalid_argument("Invalid product type.");  
        }  
    }  
};

客户端代码调用生成具体工厂

int main() {  
    ConcreteFactory factory;  
    Product* product = factory.createProduct("type1");  
    product->use(); // 输出 "Using ConcreteProduct1."  
    delete product; // 不要忘记释放内存!  
    return 0;  
}

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

文章来源:https://blog.csdn.net/qq_43517257/article/details/135744807
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。