设计模式-工厂方法模式

▼魔方 西西 提交于 2020-03-04 03:35:07

工厂方法模式结构图

意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

其中:

  • 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;
}

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!