中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

如何在C++中實現工廠模式

c++
小樊
83
2024-08-29 18:45:08
欄目: 編程語言

在C++中實現工廠模式通常涉及到一個抽象產品類(Product),一個或多個具體產品類(Concrete Product),以及一個抽象工廠類(Factory)和/或一個或多個具體工廠類(Concrete Factory)。下面是一個簡單的示例:

  1. 定義抽象產品類(Product)

這是我們要創建的對象的接口。在這個例子中,我們將創建一個簡單的形狀接口。

class Shape {
public:
    virtual ~Shape() = default;
    virtual void draw() const = 0;
};
  1. 定義具體產品類(Concrete Product)

這些是實現了抽象產品類接口的具體類。在這個例子中,我們將創建兩個具體的形狀類:圓形和矩形。

#include<iostream>

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

class Rectangle : public Shape {
public:
    void draw() const override {
        std::cout << "Drawing a rectangle"<< std::endl;
    }
};
  1. 定義抽象工廠類(Factory)

工廠類負責創建抽象產品的實例。在這個例子中,我們將創建一個形狀工廠接口。

class ShapeFactory {
public:
    virtual ~ShapeFactory() = default;
    virtual std::unique_ptr<Shape> createShape() const = 0;
};
  1. 定義具體工廠類(Concrete Factory)

這些是實現了抽象工廠類接口的具體類。在這個例子中,我們將創建兩個具體的形狀工廠類:圓形工廠和矩形工廠。

class CircleFactory : public ShapeFactory {
public:
    std::unique_ptr<Shape> createShape() const override {
        return std::make_unique<Circle>();
    }
};

class RectangleFactory : public ShapeFactory {
public:
    std::unique_ptr<Shape> createShape() const override {
        return std::make_unique<Rectangle>();
    }
};
  1. 使用工廠模式

現在我們可以使用這些工廠來創建形狀對象,而不需要直接實例化它們。

#include<memory>

int main() {
    std::unique_ptr<ShapeFactory> factory = std::make_unique<CircleFactory>();
    std::unique_ptr<Shape> shape = factory->createShape();
    shape->draw();

    factory = std::make_unique<RectangleFactory>();
    shape = factory->createShape();
    shape->draw();

    return 0;
}

在這個例子中,我們首先創建了一個圓形工廠,然后使用它來創建一個圓形對象并調用其draw方法。然后我們改變了工廠,創建了一個矩形工廠,并用它來創建一個矩形對象并調用其draw方法。這樣,我們就可以在運行時動態地改變要創建的對象的類型,而不需要修改客戶端代碼。

0
喜德县| 弥渡县| 永仁县| 玉环县| 禹州市| 高雄市| 象州县| 洛南县| 津市市| 舞阳县| 二连浩特市| 马山县| 和顺县| 乌鲁木齐市| 普定县| 阿拉尔市| 柳江县| 曲阳县| 株洲县| 开阳县| 苗栗市| 浪卡子县| 南和县| 满洲里市| 岱山县| 宿州市| 明水县| 弥勒县| 永泰县| 潼关县| 綦江县| 吉水县| 宣城市| 澄迈县| 正蓝旗| 钦州市| 广西| 五指山市| 张掖市| 天气| 临夏县|