在C++中,工厂方法模式是一种创建型设计模式,它允许在运行时根据需要创建对象,而无需指定它们的确切类。工厂方法模式通过将对象创建过程封装在一个独立的工厂类中来实现这一点。
以下是一个简单的C++工厂方法模式实现示例:
#include<iostream>
#include<memory>
class Product {
public:
virtual ~Product() = default;
};
class ConcreteProductA : public Product {
public:
void print() {
std::cout << "ConcreteProductA"<< std::endl;
}
};
class ConcreteProductB : public Product {
public:
void print() {
std::cout << "ConcreteProductB"<< std::endl;
}
};
class Creator {
public:
virtual ~Creator() = default;
virtual std::unique_ptr<Product> factoryMethod() = 0;
};
class ConcreteCreatorA : public Creator {
public:
std::unique_ptr<Product> factoryMethod() override {
return std::make_unique<ConcreteProductA>();
}
};
class ConcreteCreatorB : public Creator {
public:
std::unique_ptr<Product> factoryMethod() override {
return std::make_unique<ConcreteProductB>();
}
};
int main() {
std::unique_ptr<Creator> creatorA = std::make_unique<ConcreteCreatorA>();
std::unique_ptr<Product> productA = creatorA->factoryMethod();
productA->print();
std::unique_ptr<Creator> creatorB = std::make_unique<ConcreteCreatorB>();
std::unique_ptr<Product> productB = creatorB->factoryMethod();
productB->print();
return 0;
}
在这个示例中,我们定义了一个基类Product
和两个派生类ConcreteProductA
和ConcreteProductB
。这些类表示我们希望通过工厂方法创建的对象。
我们还定义了一个基类Creator
和两个派生类ConcreteCreatorA
和ConcreteCreatorB
。这些类负责创建Product
对象。Creator
类定义了一个纯虚函数factoryMethod()
,该函数返回一个std::unique_ptr<Product>
。
ConcreteCreatorA
和ConcreteCreatorB
分别重写factoryMethod()
函数,以返回不同类型的Product
对象。
在main()
函数中,我们创建了两个不同的Creator
对象,并使用它们的factoryMethod()
函数创建了两个不同类型的Product
对象。
这个示例演示了如何在C++中实现工厂方法模式,并使用指针和引用来处理对象。
没有搜到相关的文章