91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

如何在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
奉新县| 富锦市| 苍山县| 巫溪县| 南京市| 宁强县| 富顺县| 阳信县| 宾川县| 大渡口区| 陆川县| 兰溪市| 鄱阳县| 三都| 遵义市| 东阿县| 玉溪市| 上高县| 巴南区| 冕宁县| 新营市| 中阳县| 沙坪坝区| 谢通门县| 额尔古纳市| 察隅县| 嘉禾县| 武穴市| 宁德市| 长宁区| 日照市| 缙云县| 浑源县| 三都| 福鼎市| 黎城县| 卓尼县| 平舆县| 来安县| 乐都县| 陇川县|