工厂模式
来源:互联网 发布:用店铺做淘宝客 编辑:程序博客网 时间: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
- 工厂模式 -- 工厂方法
- 工厂模式 -- 抽象工厂
- 工厂模式-简单工厂
- 工厂模式-工厂方法
- 工厂模式:静态工厂
- 工厂模式-简单工厂
- 工厂模式-抽象工厂
- 工厂模式-工厂方法
- 工厂 > 工厂方法模式
- 工厂模式-静态工厂
- 工厂模式-抽象工厂
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- String类的实现
- C#设计模式之装饰者模式(Decorator Pattern)
- MVC简介
- Orange'S学习笔记(一)
- 屏幕旋转学习笔记
- 工厂模式
- Android 天气预报图文字幕垂直滚动效果
- cygwin中设置git提示分支名
- pat 1025. PAT Ranking (水)
- cxgrid数字排序
- USACO 1.2 Milking Cows(暴力枚举)
- #pragma once 与 #ifdef !!!
- SDUTOJ 2804求二叉树的深度
- 虚拟机编译Android 4.2 时注意的问题