溫馨提示×

如何用C++工廠模式創(chuàng)建對象

c++
小樊
84
2024-09-07 05:55:34
欄目: 編程語言

在C++中,工廠模式是一種設(shè)計模式,用于根據(jù)輸入?yún)?shù)的不同創(chuàng)建不同類型的對象。這樣可以將對象的創(chuàng)建過程與使用過程分離,提高代碼的可擴(kuò)展性和可維護(hù)性。

下面是一個使用C++工廠模式創(chuàng)建對象的示例:

  1. 首先,定義一個基類(Product)和一些派生類(ConcreteProductA, ConcreteProductB):
#include<iostream>
#include<string>

// 基類
class Product {
public:
    virtual void use() = 0;
};

// 派生類A
class ConcreteProductA : public Product {
public:
    void use() override {
        std::cout << "Using ConcreteProductA"<< std::endl;
    }
};

// 派生類B
class ConcreteProductB : public Product {
public:
    void use() override {
        std::cout << "Using ConcreteProductB"<< std::endl;
    }
};
  1. 接下來,定義一個工廠類(Factory),用于根據(jù)輸入?yún)?shù)創(chuàng)建不同類型的對象:
class Factory {
public:
    static Product* createProduct(const std::string& type) {
        if (type == "A") {
            return new ConcreteProductA();
        } else if (type == "B") {
            return new ConcreteProductB();
        } else {
            return nullptr;
        }
    }
};
  1. 最后,在主函數(shù)中使用工廠類創(chuàng)建對象并調(diào)用其方法:
int main() {
    // 創(chuàng)建對象
    Product* productA = Factory::createProduct("A");
    Product* productB = Factory::createProduct("B");

    // 使用對象
    productA->use();
    productB->use();

    // 釋放內(nèi)存
    delete productA;
    delete productB;

    return 0;
}

運(yùn)行上述代碼,將會輸出:

Using ConcreteProductA
Using ConcreteProductB

這樣,我們就成功地使用C++工廠模式創(chuàng)建了不同類型的對象。當(dāng)需要添加新的產(chǎn)品類型時,只需創(chuàng)建新的派生類并在工廠類中添加相應(yīng)的創(chuàng)建邏輯即可。

0