如何用C++实现工厂模式

   2024-09-30 6310
核心提示:工厂模式(Factory Pattern)是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客

工厂模式(Factory Pattern)是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

以下是一个使用 C++ 实现工厂模式的示例:

首先,定义一个接口(Product):
// Product.h#pragma once#include<iostream>class Product {public:    virtual void use() = 0;};
然后,为该接口创建几个具体的实现(ConcreteProduct):
// ConcreteProductA.h#pragma once#include "Product.h"class ConcreteProductA : public Product {public:    void use() override {        std::cout << "Using ConcreteProductA"<< std::endl;    }};// ConcreteProductB.h#pragma once#include "Product.h"class ConcreteProductB : public Product {public:    void use() override {        std::cout << "Using ConcreteProductB"<< std::endl;    }};
创建一个工厂类(Factory),该类根据输入参数创建具体的产品对象:
// Factory.h#pragma once#include "Product.h"class Factory {public:    static Product* createProduct(const std::string& type) {        if (type == "A") {            return new ConcreteProductA();        } else if (type == "B") {            return new ConcreteProductB();        }        return nullptr;    }};
最后,在客户端代码中使用工厂类创建所需的产品对象:
// main.cpp#include "Factory.h"#include "ConcreteProductA.h"#include "ConcreteProductB.h"int main() {    Product* productA = Factory::createProduct("A");    Product* productB = Factory::createProduct("B");    productA->use();    productB->use();    delete productA;    delete productB;    return 0;}

这个示例展示了如何使用工厂模式创建不同类型的产品对象,而无需客户端知道具体的创建细节。当需要添加新的产品类型时,只需创建一个新的具体产品类并更新工厂类即可。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号