工厂方法模式结构图
意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
其中:
- Product定义工厂方法所创建的对象的接口。
- ConcreteProduct实现Product接口
- Create声明工厂方法,该方法返回一个Product类型的对象。Create也可以定义一个工厂方法的默认实现,它返回一个默认的ConcreteProduct对象,可以调用工厂方法以创建一个Product对象。
- ConcreteCreator重定义工厂方法以返回一个ConcreteProduct实例。
应用举例
#include <iostream>
using namespace std;
//抽象产品
class Product
{
};
//具体产品A
class ConcreteProductA : public Product
{
};
//具体产品B
class ConcreteProductB : public Product
{
};
//抽象工厂
class Creator
{
public:
virtual Product *CreateProduct() = 0;
};
//具体工厂A,只生产A产品
class ConcreteCreatorA : public Creator
{
public:
virtual Product *CreateProduct()
{
return new ConcreteProductA;
}
};
//具体工厂B,只生产B产品
class ConcreteCreatorB : public Creator
{
public:
virtual Product *CreateProduct()
{
return new ConcreteProductB;
}
};
int main()
{
Creator *creatorA = new ConcreteCreatorA;
creatorA->CreateProduct();
Creator *creatorB = new ConcreteCreatorB;
creatorB->CreateProduct();
getchar();
return 0;
}
来源:CSDN
作者:程序猿萌新
链接:https://blog.csdn.net/wzz953200463/article/details/104640168