工厂模式

来源:互联网 发布:用店铺做淘宝客 编辑:程序博客网 时间:2024/06/05 22:33

工厂模式就是把简单工厂模式的工厂类中的类的实现放到了工厂子类当中来实现;

上代码:

#include <iostream>#include <stdio.h>/* run this program using the console pauser or add your own getch, system("pause") or input loop */class Animal //抽象产品类 {public:Animal(){}~Animal(){}public:virtual void act() = 0;}; class cat : public Animal//具体产品类 {public:cat(){}~cat(){}void act(){printf("猫在叫 喵喵!!\n");}};class dog : public Animal//具体产品类 {public:dog(){}~dog(){}void act(){printf("狗在叫 汪汪!!\n");}};class men: public Animal//具体产品类 {public:men(){}~men(){}void act(){printf("人在叫 啊啊!!\n");} };  class AnimalFactory //工厂类  { public:  AnimalFactory()  {  }  ~AnimalFactory()  {  }   virtual  Animal*  createAnimal() { }   };   class catFactory: public AnimalFactory//工厂子类  { public: catFactory() { } ~catFactory() { }  Animal* createAnimal() { Animal * animal = new cat();  return animal; }   }; class menFactory: public AnimalFactory//工厂子类  { public: menFactory() { } ~menFactory() {} Animal* createAnimal(){Animal*  animal = new men();return animal;} };  class dogFactory: public AnimalFactory//工厂子类  { public: dogFactory() { } ~dogFactory() {} Animal* createAnimal(){Animal*  animal = new dog();return   animal;} }; int main(int argc, char** argv) {AnimalFactory* animalfactory1 = new catFactory();Animal* cat = animalfactory1->createAnimal();cat->act();delete cat;cat = NULL;delete animalfactory1;animalfactory1 = NULL;AnimalFactory* animalfactory3 = new menFactory();Animal* men = animalfactory3->createAnimal();men->act();delete men;delete animalfactory3;AnimalFactory* animalfactory2 = new dogFactory();Animal* dog = animalfactory2->createAnimal();dog->act();delete dog;delete animalfactory2;printf("工厂模式 by 西门吹雪");return 0;}

0 0
原创粉丝点击