简单工厂:专门定义一个类来负责创建其他类的实例。通常根据自变量的不同返回不同类的实例。
class Product
{
public:
virtual void Show()=0;
};
class ProductA:public Product
{
public:
void Show()
{
cout<<"product A"<<endl;
}
};
class ProductB:public Product
{
public:
void Show()
{
cout<<"product B "<<endl;
}
};
class Factory
{
public:
Product *CreateProduct(string type);
};
Product * Factory::CreateProduct(string type)
{
if(type == "ProductA")
{
return new ProductA();
}
else if(type == "ProductB")
{
return new ProductB();
}
else
return NULL;
}
int main()
{
Factory factory ;
Product *pa=factory.CreateProduct("ProductA");
pa->Show();
return 0;
}
缺点:工厂类集中了所有实例的常见逻辑。
如果要添加一个ProductC,添加一个新类,还必须在Factory中的判断条件中增加一条。