/*********************************************************
工厂方法:
与简单工厂的区别,将产品的创建分别委托给单独的类,即一个工厂对应一个产片
而不是将所有产品的创建交给一个类来管理
1.首先创建工厂
2.通过此工厂来获取对应的产品(将对象的创建放到工厂中创建)
***********************************************************/
#include "iostream"
using namespace std;
class Fruit
{
public:
virtual void sayname() = 0;
};
class FruitFactory
{
public:
virtual Fruit* getFruit() = 0;
};
class Banana : public Fruit
{
public:
virtual void sayname()
{
cout << "Banana " << endl;
}
};
class BananaFactory : public FruitFactory
{
public:
virtual Fruit* getFruit()
{
return new Banana;
}
};
class Apple : public Fruit
{
public:
virtual void sayname()
{
cout << "Apple " << endl;
}
};
class AppleFactory : public FruitFactory
{
public:
virtual Fruit* getFruit()
{
return new Apple;
}
};
void main()
{
FruitFactory * ff = new BananaFactory();
Fruit *fruit = ff->getFruit();
fruit->sayname();
delete fruit;
delete ff;
ff = new AppleFactory();
fruit = ff->getFruit();
fruit->sayname();
delete fruit;
delete ff;
system("pause");
}