4工厂模式.docx
- 文档编号:8787919
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:37
- 大小:85.29KB
4工厂模式.docx
《4工厂模式.docx》由会员分享,可在线阅读,更多相关《4工厂模式.docx(37页珍藏版)》请在冰豆网上搜索。
4工厂模式
简单工厂模式
类图:
代码:
#include
usingnamespacestd;
classPizza
{
public:
stringname;
stringdough;
stringsauce;
Pizza()
{
}
~Pizza()
{
}
voidprepare()
{
cout<<"Preparing"< cout<<"Tossingdough..."< cout<<"Addingsauce..."< cout<<"Addingtoppings: "< } voidbake() { cout<<"Bakefor25minutesat350"< } voidcut() { cout<<"Cuttingthepizzaintodiagonalslices"< } voidbox() { cout<<"PlacepizzainofficialPizzaStorebox"< } stringgetName() { returnname; } }; classCheesePizza: publicPizza { public: CheesePizza() { name="CheesePizza"; dough="ExtraThickCrustDough"; sauce="PlumTomatoSauce"; } ~CheesePizza() { } }; classPepperoniPizza: publicPizza { public: PepperoniPizza() { name="PepperoniPizza"; dough="ExtraThickCrustDough"; sauce="PlumTomatoSauce"; } ~PepperoniPizza() { } }; classClamPizza: publicPizza { public: ClamPizza() { name="ClamPizza"; dough="ExtraThickCrustDough"; sauce="PlumTomatoSauce"; } ~ClamPizza() { } }; classVeggiePizza: publicPizza { public: VeggiePizza() { name="VeggiePizza"; dough="ExtraThickCrustDough"; sauce="PlumTomatoSauce"; } ~VeggiePizza() { } }; classSimplePizzaFactory { public: SimplePizzaFactory() { } Pizza*createPizza(stringtype) { Pizza*pizza=NULL; if(type=="cheese") { pizza=newCheesePizza(); } elseif(type=="pepperoni") { pizza=newPepperoniPizza(); } elseif(type=="clam") { pizza=newClamPizza(); } elseif(type=="veggie") { pizza=newVeggiePizza(); } returnpizza; } ~SimplePizzaFactory() { } }; classPizzaStore { SimplePizzaFactory*factory; public: PizzaStore(SimplePizzaFactory*fac) { factory=fac; } Pizza*orderPizza(stringtype) { Pizza*pizza; pizza=factory->createPizza(type); pizza->prepare(); pizza->bake(); pizza->cut(); pizza->box(); returnpizza; } ~PizzaStore() { } }; intmain() { SimplePizzaFactory*factory=newSimplePizzaFactory(); PizzaStore*pizzastore=newPizzaStore(factory); pizzastore->orderPizza("cheese"); return0; } 工厂方法模式 类图: 代码: #include #include usingnamespacestd; classPizza { public: stringname; stringdough; stringsauce; vector Pizza() { } ~Pizza() { } voidprepare() { cout<<"Preparing"< cout<<"Tossingdough..."< cout<<"Addingsauce..."< cout<<"Addingtoppings: "< for(vector : size_typei=0;i { cout< } } voidbake() { cout<<"Bakefor25minutesat350"< } voidcut() { cout<<"Cuttingthepizzaintodiagonalslices"< } voidbox() { cout<<"PlacepizzainofficialPizzaStorebox"< } stringgetName() { returnname; } }; classNYStyleCheesePizza: publicPizza { public: NYStyleCheesePizza() { name="NYStyleSauceandCheesePizza"; dough="ExtraThickCrustDough"; sauce="PlumTomatoSauce"; toppings.push_back("GratedReggianoCheese"); } ~NYStyleCheesePizza() { } }; classNYStylePepperoniPizza: publicPizza { public: NYStylePepperoniPizza() { name="NYStyleSauceandPepperoniPizza"; dough="ExtraThickCrustDough"; sauce="PlumTomatoSauce"; toppings.push_back("GratedReggianoCheese"); } ~NYStylePepperoniPizza() { } }; classNYStyleClamPizza: publicPizza { public: NYStyleClamPizza() { name="NYStyleSauceandClamPizza"; dough="ExtraThickCrustDough"; sauce="PlumTomatoSauce"; toppings.push_back("GratedReggianoCheese"); } ~NYStyleClamPizza() { } }; classNYStyleVeggiePizza: publicPizza { public: NYStyleVeggiePizza() { name="NYStyleSauceandVeggiePizza"; dough="ExtraThickCrustDough"; sauce="PlumTomatoSauce"; toppings.push_back("GratedReggianoCheese"); } ~NYStyleVeggiePizza() { } }; classCHIStyleCheesePizza: publicPizza { public: CHIStyleCheesePizza() { name="ChicagoStyleDeepDishCheesePizza"; dough="ExtraThickCrustDough"; sauce="PlumTomatoSauce"; toppings.push_back("ShreddedMozzarellaCheese"); } ~CHIStyleCheesePizza() { } voidcut() { cout<<"Cuttingthepizzaintosquareslices"< } }; classCHIStylePepperoniPizza: publicPizza { public: CHIStylePepperoniPizza() { name="ChicagoStyleDeepDishPepperoniPizza"; dough="ExtraThickCrustDough"; sauce="PlumTomatoSauce"; toppings.push_back("ShreddedMozzarellaCheese"); } ~CHIStylePepperoniPizza() { } voidcut() { cout<<"Cuttingthepizzaintosquareslices"< } }; classCHIStyleClamPizza: publicPizza { public: CHIStyleClamPizza() { name="ChicagoStyleDeepDishClamPizza"; dough="ExtraThickCrustDough"; sauce="PlumTomatoSauce"; toppings.push_back("ShreddedMozzarellaCheese"); } ~CHIStyleClamPizza() { } voidcut() { cout<<"Cuttingthepizzaintosquareslices"< } }; classCHIStyleVeggiePizza: publicPizza { public: CHIStyleVeggiePizza() { name="ChicagoStyleDeepDishVeggiePizza"; dough="ExtraThickCrustDough"; sauce="PlumTomatoSauce"; toppings.push_back("ShreddedMozzarellaCheese"); } ~CHIStyleVeggiePizza() { } voidcut() { cout<<"Cuttingthepizzaintosquareslices"< } }; classPizzaStore { public: Pizza*orderPizza(stringtype) { Pizza*pizza; pizza=createPizza(type); pizza->prepare(); pizza->bake(); pizza->cut(); pizza->box(); returnpizza; } virtualPizza*createPizza(stringtype)=0; }; classNYPizzaStore: publicPizzaStore { Pizza*createPizza(stringtype) { Pizza*pizza; if(type=="cheese") { pizza=newNYStyleCheesePizza(); } elseif(type=="pepperoni") { pizza=newNYStylePepperoniPizza(); } elseif(type=="clam") { pizza=newNYStyleClamPizza(); } elseif(type=="veggie") { pizza=newNYStyleVeggiePizza(); } returnpizza; } }; classChicagoPizzaStore: publicPizzaStore { Pizza*createPizza(stringtype) { Pizza*pizza; if(type=="cheese") { pizza=newCHIStyleCheesePizza(); } elseif(type=="pepperoni") { pizza=newCHIStylePepperoniPizza(); } elseif(type=="clam") { pizza=newCHIStyleClamPizza(); } elseif(type=="veggie") { pizza=newCHIStyleVeggiePizza(); } returnpizza; } }; intmain() { PizzaStore*nyStore=newNYPizzaStore(); PizzaStore*chiStore=newChicagoPizzaStore(); Pizza*pizza=nyStore->orderPizza("cheese"); cout<<"Ethanordereda"< pizza=chiStore->orderPizza("cheese"); cout<<"Joelordereda"< } 抽象工厂模式 类图: 代码: #include #include usingnamespacestd; classDough { public: Dough() { } ~Dough() { } }; classSauce { public: Sauce() { } ~Sauce() { } }; classCheese { public: Cheese() { } ~Cheese() { } }; classVeggies { public: Veggies() { } ~Veggies() { } }; classPepperoni { public: Pepperoni() { } ~Pepperoni() { } }; classClams { public: Clams() { } ~Clams() { } }; classThiCrustDough: publicDough { public: ThiCrustDough() { cout<<"ThiCrustDough"< } ~ThiCrustDough() { } }; classThickCrustDough: publicDough { public: ThickCrustDough() { cout<<"ThickCrustDough"< } ~ThickCrustDough() { } }; classMarinaraSauce: publicSauce { public: MarinaraSauce() { cout<<"MarinaraSauce"< } ~MarinaraSauce() { } }; classPlumTomatoSauce: publicSauce { public: PlumTomatoSauce() { cout<<"PlumTomatoSauce"< } ~PlumTomatoSauce() { } }; classReggianoCheese: publicCheese { public: ReggianoCheese() { cout<<"ReggianoCheese"< } ~ReggianoCheese() { } }; classMozzarellaCheese: publicCheese { public: MozzarellaCheese() { cout<<"MozzarellaCheese"< } ~MozzarellaCheese() { } }; classGralic: publicVeggies { public: Gralic() { cout<<"Gralic"< } ~Gralic() { } }; classOnion: publicVeggies { public: Onion() { cout<<"Onion"< } ~Onion() { } }; classMushroom: publicVeggies { public: Mushroom() { cout<<"Mushroom"< } ~Mushroom() { } }; classRedPepper: publicVeggies { public: RedPepper() { cout<<"RedPepper"< } ~RedPepper() { } }; classBlackVeggies: publicVeggies { public: BlackVeggies() { cout<<"BlackVeggies"< } ~BlackVeggies() { } }; classSpinach: publicVeggies { public: Spinach() { cout<<"Spinach"< } ~Spinach() { } }; classEggplant: publicVeggies { public: Eggplant() { cout<<"Eggplant"< } ~Eggplant() { } }; classSlicedPepperoni: publicPepperoni { public: SlicedPepperoni() { cout<<"SlicedPepperoni"< } ~SlicedPepperoni() { } }; classFreshClams: publicClams { public: FreshClams() { cout<<"FreshClams"< } ~FreshClams() { } }; classFrozenClams: publicClams { public: FrozenClams() { cout<<"FrozenClams"< } ~FrozenClams() { } }; classPizzaIngredientFactory { public: Dough*createDough() { } Sauce*createSauce() { } Cheese*createCheese() { } Veggies**createVeggies() { } Pepperoni*createPrpperoni() { } Clams*createClam() { } }; classNYPizzaIngredientFactory: publicPizzaIngredientFactory { Dough*createDough() { returnnew
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工厂 模式