工廠模式(Factory Pattern)是一種創建型設計模式,它提供了一種創建對象的最佳方式。在工廠模式中,我們在創建對象時不會對客戶端暴露創建邏輯,并且是通過使用一個共同的接口來指向新創建的對象。
以下是一個使用 C++ 實現工廠模式的示例:
// Product.h
#pragma once
#include<iostream>
class Product {
public:
virtual void use() = 0;
};
// ConcreteProductA.h
#pragma once
#include "Product.h"
class ConcreteProductA : public Product {
public:
void use() override {
std::cout << "Using ConcreteProductA"<< std::endl;
}
};
// ConcreteProductB.h
#pragma once
#include "Product.h"
class ConcreteProductB : public Product {
public:
void use() override {
std::cout << "Using ConcreteProductB"<< std::endl;
}
};
// Factory.h
#pragma once
#include "Product.h"
class Factory {
public:
static Product* createProduct(const std::string& type) {
if (type == "A") {
return new ConcreteProductA();
} else if (type == "B") {
return new ConcreteProductB();
}
return nullptr;
}
};
// main.cpp
#include "Factory.h"
#include "ConcreteProductA.h"
#include "ConcreteProductB.h"
int main() {
Product* productA = Factory::createProduct("A");
Product* productB = Factory::createProduct("B");
productA->use();
productB->use();
delete productA;
delete productB;
return 0;
}
這個示例展示了如何使用工廠模式創建不同類型的產品對象,而無需客戶端知道具體的創建細節。當需要添加新的產品類型時,只需創建一個新的具體產品類并更新工廠類即可。