一般程序架构分为:
图形界面层——逻辑控制层——基础功能层
作用:
延迟子类实例化,一般用于逻辑控制层中。
类图如下:
示例代码:
#include <iostream>
class IProduct
{
//可以在此处添加一些产品的共有方法
};
class ProductA : public IProduct
{
public:
ProductA(){printf("this is a ProductA\n");}
};
class ProductB : public IProduct
{
public:
ProductB(){printf("this is a ProductB\n");}
};
class CProductFactory
{
public:
IProduct *CreateProduct(int iProductType)
{
switch (iProductType)
{
case 0:
return new ProductA();
case 1:
default:
return new ProductB();
}
}
};
void main()
{
CProductFactory pf;
IProduct *p1 = pf.CreateProduct(0);
IProduct *p2 = pf.CreateProduct(1);
IProduct *p3 = pf.CreateProduct(2);
delete p1;
p1 = NULL;
delete p2;
p2 = NULL;
delete p3;
p3 = NULL;
system("pause");
}
由于是初学设计模式,错误在所难免,欢迎各位高手拍砖。
简单工厂模式的工厂类也可以直接将获取实例的方法以静态方法的形式写到基类中,总之模式是死的,人是活的,只要能实现我们的目的就OK了,不用太拘泥于形式。