当前位置:首页 C++ > 正文

c++工厂设计模式

作者:野牛程序员:2023-06-15 16:04:52 C++阅读 2718

C++工厂设计模式(Factory Design Pattern)是一种创建型设计模式,用于实现对象的创建,而无需暴露创建逻辑给客户端代码。工厂设计模式提供一个接口,用于创建对象,但具体的对象实例化过程由工厂类来完成。

以下是一个简单的示例来说明如何在C++中使用工厂设计模式:

#include <iostream>
using namespace std;

// 抽象产品类
class Product {
public:
    virtual void use() = 0;
};

// 具体产品类A
class ConcreteProductA : public Product {
public:
    void use() {
        cout << "Using ConcreteProductA" << endl;
    }
};

// 具体产品类B
class ConcreteProductB : public Product {
public:
    void use() {
        cout << "Using ConcreteProductB" << endl;
    }
};

// 工厂方法类型定义
typedef Product* (*FactoryMethod)();

// 具体工厂类A
class ConcreteFactoryA {
public:
    static Product* createProduct() {
        return new ConcreteProductA();
    }
};

// 具体工厂类B
class ConcreteFactoryB {
public:
    static Product* createProduct() {
        return new ConcreteProductB();
    }
};

int main() {
    // 使用具体工厂A创建产品A
    FactoryMethod factoryA = ConcreteFactoryA::createProduct;
    Product* productA = factoryA();
    productA->use();

    // 使用具体工厂B创建产品B
    FactoryMethod factoryB = ConcreteFactoryB::createProduct;
    Product* productB = factoryB();
    productB->use();

    delete productA;
    delete productB;

    return 0;
}

在这个例子中,我们定义了一个函数指针类型 FactoryMethod,它指向一个返回 Product* 类型的函数。具体工厂类 ConcreteFactoryAConcreteFactoryB 中的 createProduct 方法被声明为静态方法,返回对应的具体产品实例。

通过使用函数指针作为工厂方法类型,我们可以动态选择使用不同的具体工厂来创建产品实例,从而实现工厂设计模式的效果。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击