首页 关于我们 成功案例 网络营销 电商设计 新闻中心 联系方式
QQ联系
电话联系
手机联系

c++如何实现一个简单的工厂模式_C++面向对象工厂设计实例

发布时间:2025-11-06 11:04
发布者:网络
浏览次数:
工厂模式通过封装对象创建过程实现解耦。在C++中,定义Shape抽象基类并让Circle、Rectangle继承它,各自实现draw方法;再通过ShapeFactory工厂类根据类型标识创建对应派生类对象,利用基类指针和多态调用相应行为,使用者无需知晓具体类,只需通过工厂获取实例,便于扩展与维护。

c++如何实现一个简单的工厂模式_c++面向对象工厂设计实例

工厂模式是一种创建型设计模式,适用于对象的创建过程需要封装、解耦的场景。在C++中,通过基类指针和多态特性,可以轻松实现一个简单的工厂模式。下面通过一个具体例子说明如何用C++实现工厂模式。

定义产品接口

首先定义一个抽象基类作为产品的统一接口。比如我们有一个“图形”类:

class Shape {
public:
    virtual ~Shape() = default;
    virtual void draw() const = 0;
};

所有具体图形(如圆形、矩形)都将继承这个类并实现draw方法。

实现具体产品类

接下来定义几个具体的子类:

class Circle : public Shape {
public:
    void draw() const override {
        std::cout << "Drawing a Circle\n";
    }
};

class Rectangle : public Shape {
public:
    void draw() const override {
        std::cout << "Drawing a Rectangle\n";
    }
};

这些类实现了各自的行为,但都符合Shape接口。

创建工厂类

工厂类负责根据输入参数创建对应的产品对象:

刺鸟创客 刺鸟创客

一款专业高效稳定的AI内容创作平台

刺鸟创客 110 查看详情 刺鸟创客
class ShapeFactory {
public:
    enum class ShapeType { CIRCLE, RECTANGLE };

    static std::unique_ptr<Shape> createShape(ShapeType type) {
        switch (type) {
            case ShapeType::CIRCLE:
                return std::make_unique<Circle>();
            case ShapeType::RECTANGLE:
                return std::make_unique<Rectangle>();
            default:
                return nullptr;
        }
    }
};

这里使用静态函数和枚举来决定创建哪种对象,返回的是基类指针,便于统一管理。

使用示例

main函数中调用工厂创建对象:

int main() {
    auto shape1 = ShapeFactory::createShape(ShapeFactory::ShapeType::CIRCLE);
    auto shape2 = ShapeFactory::createShape(ShapeFactory::ShapeType::RECTANGLE);

    if (shape1) shape1->draw();     // 输出: Drawing a Circle
    if (shape2) shape2->draw();     // 输出: Drawing a Rectangle

    return 0;
}

通过工厂,使用者无需知道具体类名,只需传递类型标识即可获得所需对象。

基本上就这些。这种实现方式结构清晰,易于扩展新类型,是C++中常见的面向对象设计实践。只要注意内存管理和类型安全,就能写出稳定可靠的工厂代码。

以上就是c++++如何实现一个简单的工厂模式_C++面向对象工厂设计实例的详细内容,更多请关注其它相关文章!


# c++  # win  # 面向对象  # 如何实现  # 子类  # 如何使用  # 多态  # 只需  # 数据结构  # 重写  # 设计实例  # 尼克  # seo.126bet6.com  # 阜城网站优化搜索  # seo禁忌网站  # 北碚区网站建设推广  # 仙桃网站建设美丽  # 长沙县图文营销推广招聘  # 池州全网营销推广哪里有  # 毕节抖音seo价格多少  # seo和sem脑图  # 杭州药企推广招聘网站