1、Adding toppings: void bake()Bake for 25 minutes at 350 void cut()Cutting the pizza into diagonal slices void box()Place pizza in official PizzaStore box string getName() return name;class CheesePizza:public Pizza CheesePizza() name = Cheese Pizza; dough = Extra Thick Crust Dough sauce = Plum Tomato
2、Sauce CheesePizza()class PepperoniPizza: PepperoniPizza()Pepperoni Pizza PepperoniPizza()class ClamPizza: ClamPizza()Clam Pizza ClamPizza()class VeggiePizza: VeggiePizza()Veggie Pizza VeggiePizza()class SimplePizzaFactory SimplePizzaFactory() Pizza* createPizza(string type) Pizza* pizza = NULL; if(t
3、ype=cheese) pizza = new CheesePizza(); else if(type=pepperoni pizza = new PepperoniPizza();clam pizza = new ClamPizza();veggie pizza = new VeggiePizza(); return pizza; SimplePizzaFactory()class PizzaStore SimplePizzaFactory* factory; PizzaStore(SimplePizzaFactory* fac) factory = fac; Pizza* orderPiz
4、za(string type) Pizza* pizza; pizza = factory-createPizza(type); pizza-prepare();bake();cut();box(); PizzaStore()int main() SimplePizzaFactory* factory = new SimplePizzaFactory(); PizzaStore* pizzastore = new PizzaStore(factory); pizzastore-orderPizza(); return 0;工厂方法模式vector vector toppings; dough
5、sauce for(vector:size_type i=0; itoppings.size(); +i) toppingsi class NYStyleCheesePizza: NYStyleCheesePizza()NY Style Sauce and Cheese Pizza toppings.push_back(Grated Reggiano Cheese NYStyleCheesePizza()class NYStylePepperoniPizza: NYStylePepperoniPizza()NY Style Sauce and Pepperoni Pizza NYStylePe
6、pperoniPizza()class NYStyleClamPizza: NYStyleClamPizza()NY Style Sauce and Clam Pizza NYStyleClamPizza()class NYStyleVeggiePizza: NYStyleVeggiePizza()NY Style Sauce and Veggie Pizza NYStyleVeggiePizza()class CHIStyleCheesePizza: CHIStyleCheesePizza()Chicago Style Deep Dish Cheese PizzaShredded Mozza
7、rella Cheese CHIStyleCheesePizza() coutEthan ordered apizza-getName()Joel ordered a抽象工厂模式class Dough Dough() Dough()class Sauce Sauce() Sauce()class Cheese Cheese() Cheese()class Veggies Veggies() Veggies()class Pepperoni Pepperoni() Pepperoni()class Clams Clams() Clams()class ThiCrustDough:public D
8、ough ThiCrustDough()ThiCrustDough ThiCrustDough()class ThickCrustDough: ThickCrustDough()ThickCrustDough ThickCrustDough()class MarinaraSauce:public Sauce MarinaraSauce()MarinaraSauce MarinaraSauce()class PlumTomatoSauce: PlumTomatoSauce()PlumTomatoSauce PlumTomatoSauce()class ReggianoCheese:public
9、Cheese ReggianoCheese()ReggianoCheese ReggianoCheese()class MozzarellaCheese: MozzarellaCheese()MozzarellaCheese MozzarellaCheese()class Gralic:public Veggies Gralic()Gralic Gralic()class Onion: Onion()Onion Onion()class Mushroom: Mushroom()Mushroom Mushroom()class RedPepper: RedPepper()RedPepper Re
10、dPepper()class BlackVeggies: BlackVeggies()BlackVeggies BlackVeggies()class Spinach: Spinach()Spinach Spinach()class Eggplant: Eggplant()Eggplant Eggplant()class SlicedPepperoni:public Pepperoni SlicedPepperoni()SlicedPepperoni SlicedPepperoni()class FreshClams:public Clams FreshClams()FreshClams Fr
11、eshClams()class FrozenClams: FrozenClams()FrozenClams FrozenClams()class PizzaIngredientFactory Dough* createDough() Sauce* createSauce() Cheese* createCheese() Veggies* createVeggies() Pepperoni* createPrpperoni() Clams* createClam()class NYPizzaIngredientFactory:public PizzaIngredientFactory return new