简单工厂模式并不是一个设计模式
#ifndef SimpleFactory_h
#define SimpleFactory_h
typedef enum ProductType
{
ProductTypeA = 1,
ProductTypeB = 2,
};
class Product // 产品抽象类
{
public:
virtual void method() = 0;
};
class ProductA : public Product // 具体产品A
{
public:
virtual void method()
{
printf("ProductA method.\n");
}
};
class ProductB : public Product // 具体产品B
{
public:
virtual void method()
{
printf("ProductB method.\n");
}
};
class Factory
{
public:
static Product *createProduct(ProductType productType)
{
switch (productType)
{
case ProductTypeA:
return new ProductA();
case ProductTypeB:
return new ProductB();
default:
return NULL;
}
}
};
#endif
测试
#include <iostream>
#include "SimpleFactory.h"
int main(int argc, char **argv)
{
Product *productA = Factory::createProduct(ProductTypeA);
productA->method();
Product *productB = Factory::createProduct(ProductTypeB);
productB->method();
return 0;
}