// 定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,
// 工厂模式使得一个类的实例化延迟到了子类
//
// 模式举例:
//
// 模式特点:该模式主要用途是类实例化的延迟,缺点是如果产品
// 过多对应的工厂也会过多,客户端不容易维护
//
//#include<iostream>
#include<string>
using namespace std;class Product
{
public:virtual void showName()=0;
};class Factory
{
public:virtual Product * createProduct()=0;
};class ProductA : public Product
{
public:virtual void showName(){cout <<"ProductA"<<endl;}
};class ProductB : public Product
{
public:virtual void showName(){cout <<"ProductB"<<endl;}
};class FactoryA : public Factory
{
public:virtual Product * createProduct(){return new ProductA();}
};class FactoryB : public Factory
{
public:virtual Product * createProduct(){return new ProductB();}
};int main()
{Factory * factory = new FactoryA();Product * product = factory->createProduct();product->showName();return 0;
}