收藏 分销(赏)

《设计模式02》-工厂方法.ppt

上传人:二*** 文档编号:12817746 上传时间:2025-12-10 格式:PPT 页数:24 大小:426KB 下载积分:5 金币
下载 相关 举报
《设计模式02》-工厂方法.ppt_第1页
第1页 / 共24页
本文档共24页,全文阅读请下载到手机保存,查看更方便
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,第二部分 创建型设计模式,工厂方法模式(Factory Method Pattern),简单工厂模式(Simple Factory Pattern),单件模式(Singleton Pattern),构造器模式(Builder Pattern),原型模式(Prototype Pattern),抽象工厂模式(Abstract Factory Pattern),工厂方法模式,CreateAndUse(),class Client,public:,void CreateAndUse(),int sum=0;,Dog*dog=new Dog;,sum+=dog-Sale();,delete dog;,Cat*cat=new Cat;,sum+=cat-Sale();,delete cat;,Fish*fish=new Fish;,sum+=fish-Sale();,delete fish;,coutsumSale();,delete ani;,IAnimal*,ani=new Cat;,sum+=cat-Sale();,delete ani;,IAnimal*,ani=new Fish;,sum+=ani Sale();,delete ani;,coutsumSale();,delete ani;,IAnimal*ani=,CreateCat();,sum+=ani-Sale();,delete ani;,IAnimal*ani=,CreateFish();,sum+=ani-Sale();,delete ani;,cout“Total Sale:”Sale();,delete ani;,IAnimal*ani=,fac.CreateCat();,sum+=ani-Sale();,delete ani;,IAnimal*ani=,fac.,CreateFish();,sum+=ani-Sale();,delete ani;,cout“Total Sale:”Sale();,delete ani;,IAnimal*ani=,fac.CreateAnimal(C);,sum+=ani-Sale();,delete ani;,IAnimal*ani=,fac.,CreateAnimal(F);,sum+=ani-Sale();,delete ani;,cout“Total Sale:”AddRoom(r1);,aMaze-AddRoom(r2);,r1-SetSide(North,makeWall();,r1-SetSide(East,door);,r1-SetSide(South,makeWall();,r1-SetSide(West,makeWall();,r2-SetSide(North,makeWall();,r2-SetSide(East,makeWall();,r2-SetSide(South,makeWall();,r2-SetSide(West,door);,return aMaze;,MazeFactory的子类BombedMazeFactory,class BombedMazeFactory:public MazeFactor,Public:,BombedMazeFactory();,virtual Wall*MakeWall()const return new BombedWall;,virtual Room*MakeRoom(int n)const return new RoomWithABomb(n);,;,MazeFactory的子类EnchantedMazeFactory,class EnchantedMazeFactory:public MazeFactroy,public:,EnchantedMazeFactory();,virtual Room*MakeRoom(int n)const,return new EnchantedRoom(n,CastSpell();,Virtual Door*MakeDoor(Room*r1,Room*r2)const,return new DoorNeedingSpell(r1,r2);,protected:,Spell*CastSpell()const;,;,Factory的使用,Class Game,Public:,Game(MazeFactory&fac),aMaze=fac.CreateMaze();,Private:,Maze *aMaze;,;,Factory中的CreateMaze也可以放到Game中。,Class Game,Public:,Game(MazeFactory&fac),aMaze=CreateMaze(fac);,Protected:,Maze*CreateMaze(MazeFactory&fac),/将例中的MakeRoom等改成,/fac.MakeRoom。略,Private:,Maze *aMaze;,;,template,class MyCreator:public Creator,public:,virtual Product*CreateProduct();,;,template,Product*MyCreator:CreateProduct(),return new TheProduct;,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 环境建筑 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服