/********************************************************* 工厂方法: 与简单工厂的区别,将产品的创建分别委托给单独的类,即一个工厂对应一个产片 而不是将所有产品的创建交给一个类来管理 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"); }