首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++中的工厂方法模式实现:作用域,指针与引用

在C++中,工厂方法模式是一种创建型设计模式,它允许在运行时根据需要创建对象,而无需指定它们的确切类。工厂方法模式通过将对象创建过程封装在一个独立的工厂类中来实现这一点。

以下是一个简单的C++工厂方法模式实现示例:

代码语言:cpp
复制
#include<iostream>
#include<memory>

class Product {
public:
    virtual ~Product() = default;
};

class ConcreteProductA : public Product {
public:
    void print() {
        std::cout << "ConcreteProductA"<< std::endl;
    }
};

class ConcreteProductB : public Product {
public:
    void print() {
        std::cout << "ConcreteProductB"<< std::endl;
    }
};

class Creator {
public:
    virtual ~Creator() = default;
    virtual std::unique_ptr<Product> factoryMethod() = 0;
};

class ConcreteCreatorA : public Creator {
public:
    std::unique_ptr<Product> factoryMethod() override {
        return std::make_unique<ConcreteProductA>();
    }
};

class ConcreteCreatorB : public Creator {
public:
    std::unique_ptr<Product> factoryMethod() override {
        return std::make_unique<ConcreteProductB>();
    }
};

int main() {
    std::unique_ptr<Creator> creatorA = std::make_unique<ConcreteCreatorA>();
    std::unique_ptr<Product> productA = creatorA->factoryMethod();
    productA->print();

    std::unique_ptr<Creator> creatorB = std::make_unique<ConcreteCreatorB>();
    std::unique_ptr<Product> productB = creatorB->factoryMethod();
    productB->print();

    return 0;
}

在这个示例中,我们定义了一个基类Product和两个派生类ConcreteProductAConcreteProductB。这些类表示我们希望通过工厂方法创建的对象。

我们还定义了一个基类Creator和两个派生类ConcreteCreatorAConcreteCreatorB。这些类负责创建Product对象。Creator类定义了一个纯虚函数factoryMethod(),该函数返回一个std::unique_ptr<Product>

ConcreteCreatorAConcreteCreatorB分别重写factoryMethod()函数,以返回不同类型的Product对象。

main()函数中,我们创建了两个不同的Creator对象,并使用它们的factoryMethod()函数创建了两个不同类型的Product对象。

这个示例演示了如何在C++中实现工厂方法模式,并使用指针和引用来处理对象。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券