工厂方法模式介绍-并用C++简单实现

工厂方法模式是一种创建型设计模式,它提供了一个创建对象的接口,具体创建哪个对象由子类决定。此模式适用于需要创建复杂对象的情况,通过将对象的创建与使用分离,增强系统的可扩展性和代码复用。示例中展示了如何创建Shape的Circle和Square实现,通过抽象Factory类和具体Factory子类实现。
摘要由CSDN通过智能技术生成

工厂方法模式介绍

工厂方法模式是一种创建型设计模式,该模式提供了一个创建对象的接口,但具体创建哪个对象则由子类决定。工厂方法模式可以将对象的创建和使用分离开来,从而更加灵活地管理对象的创建过程。

其应用场景通常是在需要创建复杂对象的情况下,例如游戏中创建不同种类的怪物、人物等。通过将对象的创建交给子类来完成,可以更好地扩展系统,减少耦合性并提高代码复用性。

工厂方法模式的实现通常包括一个抽象工厂类和多个具体工厂子类。抽象工厂类定义了一个创建对象的接口,具体工厂子类则实现了该接口来创建具体的对象。

代码示例

#include <memory>
#include <iostream>


// Virtual Product
class Shape {
public:
    virtual void draw() = 0;
};

// Actual Product Circle
class Circle : public Shape {
public:
    void draw() override {
        std::cout << "Circle::draw()" << std::endl;
    }
};

// Actual Product Square
class Square : public Shape {
public:
    void draw() override {
        std::cout << "Square::draw()" << std::endl;
    }
};

// Virtual Factory
class Factory{
public:
    virtual std::unique_ptr<Shape> createShape() = 0;
};

// Actual Factory Circle
class CircleFactory : public Factory {
public:
    std::unique_ptr<Shape> createShape() override {
        return std::make_unique<Circle>();
    }
};

// Actual Facotry Square
class SquareFactory : public Factory {
public:
    std::unique_ptr<Shape> createShape() override {
        return std::make_unique<Square>();
    }
};

int main(int argc, char* argv[]) {
    Factory* circleFactory = new CircleFactory();
    Factory* squareFactory = new SquareFactory();

    auto circle = circleFactory->createShape();
    auto square = squareFactory->createShape();

    circle->draw();
    square->draw();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

telllong

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值