工厂模式(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;
}
这个示例展示了如何使用工厂模式创建不同类型的产品对象,而无需客户端知道具体的创建细节。当需要添加新的产品类型时,只需创建一个新的具体产品类并更新工厂类即可。