2022年2022年工厂模式代码及类

上传人:痛*** 文档编号:119551827 上传时间:2022-07-15 格式:PDF 页数:9 大小:167.18KB
返回 下载 相关 举报
2022年2022年工厂模式代码及类_第1页
第1页 / 共9页
2022年2022年工厂模式代码及类_第2页
第2页 / 共9页
2022年2022年工厂模式代码及类_第3页
第3页 / 共9页
点击查看更多>>
资源描述
1 抽象工厂类图:class Class ModelOnion+Onion()CheesePizza ingredientFactory:PizzaIngredientFactory+CheesePizza(PizzaIngredientFactory)prepare():voidChicagoPizzaIngredientFactory+createDough():Dough+createSauce():Sauce+createVeggies():VeggiesChicagoPizzaStore#createPizza(String):Pizza?interface?DoughEggplant+Eggplant()Garlic+Garlic()MarinaraSauce+MarinaraSauce()Mushroom+Mushroom()BlackOlives+BlackOlives()NYPizzaStore#createPizza(String):PizzaVeggiesPizza ingredientFactory:PizzaIngredientFactory prepare():void+VeggiesPizza(PizzaIngredientFactory)Pizza dough:Dough name:String sauce:Sauce veggies:Veggies()bake():void box():void cut():void prepare():void setName(String):void?property get?getname():String?interface?PizzaIngredientFactory+createDough():Dough+createSauce():Sauce+createVeggies():VeggiesPizzaStore#createPizza(String):Pizza+orderPizza(String):PizzaPlumTomatoSauce+PlumTomatoSauce()?interface?SauceThickCrustDough+ThickCrustDough()ThinCrustDough+ThinCrustDough()?interface?VeggiesNYPizzaIngredientFactory+createDough():Dough+createSauce():Sauce+createVeggies():VeggiesingredientFactorydoughsauceveggiesingredientFactory代码:public interface Sauce public class MarinaraSauce implements Sauce public MarinaraSauce()System.out.println(Add MarinaraSauce.);public class PlumTomatoSauce implements Sauce public PlumTomatoSauce()System.out.println(Add PlumTomatoSauce.);public interface Dough 名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 9 页 -2 public class ThickCrustDough implements Dough public ThickCrustDough()System.out.println(Add ThickCrustDough.);public class ThinCrustDough implements Dough public ThinCrustDough()System.out.println(Add ThinCrustDough.);public interface Veggies public class Onion implements Veggies public Onion()System.out.println(Add Onion.);public class Mushroom implements Veggies public Mushroom()System.out.println(Add Mushroom.);public class Garlic implements Veggies public Garlic()System.out.println(Add Garlic.);public class Eggplant implements Veggies public Eggplant()System.out.println(Add Eggplant.);public class BlackOlives implements Veggies public BlackOlives()System.out.println(Add BlackOlives.);public abstract class Pizza String name;Dough dough;Sauce sauce;Veggies veggies;abstract void prepare();void bake()System.out.println(Bake for 25 minutes at 350);void cut()System.out.println(Cutting the pizza into diagonal slices);void box()System.out.println(Place pizza in official PizzaStore box);void setName(String name)this.name=name;String getname()return name;名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 9 页 -3 public interface PizzaIngredientFactory public Dough createDough();public Sauce createSauce();public Veggies createVeggies();public class NYPizzaIngredientFactory implements PizzaIngredientFactory public Dough createDough()return new ThinCrustDough();public Sauce createSauce()return new MarinaraSauce();public Veggies createVeggies()Veggies veggies=new Garlic(),new Onion(),new Mushroom();return veggies;public class ChicagoPizzaIngredientFactory implements PizzaIngredientFactory public Dough createDough()return new ThickCrustDough();public Sauce createSauce()return new PlumTomatoSauce();public Veggies createVeggies()Veggies veggies=new BlackOlives(),new Eggplant();return veggies;public class VeggiesPizza extends Pizza PizzaIngredientFactory ingredientFactory;public VeggiesPizza(PizzaIngredientFactory ingredientFactory)this.ingredientFactory=ingredientFactory;void prepare()System.out.println(Preparing+name);dough=ingredientFactory.createDough();sauce=ingredientFactory.createSauce();veggies=ingredientFactory.createVeggies();public class CheesePizza extends Pizza PizzaIngredientFactory ingredientFactory;public CheesePizza(PizzaIngredientFactory ingredientFactory)this.ingredientFactory=ingredientFactory;void prepare()System.out.println(Preparing+name);dough=ingredientFactory.createDough();sauce=ingredientFactory.createSauce();名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 9 页 -4 public abstract class PizzaStore public Pizza orderPizza(String type)Pizza pizza;pizza=createPizza(type);pizza.prepare();pizza.bake();pizza.cut();pizza.box();return pizza;protected abstract Pizza createPizza(String type);public class NYPizzaStore extends PizzaStore protected Pizza createPizza(String item)Pizza pizza=null;PizzaIngredientFactory ingredientFactory=new NYPizzaIngredientFactory();if(item.equals(cheese)pizza=new CheesePizza(ingredientFactory);pizza.setName(New York Style Cheese Pizza);else if(item.equals(veggie)pizza=new VeggiesPizza(ingredientFactory);pizza.setName(New York Style veggie Pizza);return pizza;public class ChicagoPizzaStore extends PizzaStore protected Pizza createPizza(String item)Pizza pizza=null;PizzaIngredientFactory ingredientFactory=new ChicagoPizzaIngredientFactory();if(item.equals(cheese)pizza=new CheesePizza(ingredientFactory);pizza.setName(Chicago Style Cheese Pizza);else if(item.equals(veggie)pizza=new VeggiesPizza(ingredientFactory);pizza.setName(Chigago Style veggie Pizza);return pizza;测试结果Preparing New York Style Cheese Pizza Add ThinCrustDough.名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 9 页 -5 Add MarinaraSauce.Bake for 25 minutes at 350 Cutting the pizza into diagonal slices Place pizza in official PizzaStore box Ethan ordered a New York Style Cheese Pizza Preparing Chigago Style veggie Pizza Add ThickCrustDough.Add PlumTomatoSauce.Add BlackOlives.Add Eggplant.Bake for 25 minutes at 350 Cutting the pizza into diagonal slices Place pizza in official PizzaStore box Joel ordered a Chigago Style veggie Pizza Preparing New York Style veggie Pizza Add ThinCrustDough.Add MarinaraSauce.Add Garlic.Add Onion.Add Mushroom.Bake for 25 minutes at 350 Cutting the pizza into diagonal slices Place pizza in official PizzaStore box Mul ordered a New York Style veggie Pizza Preparing Chicago Style Cheese Pizza Add ThickCrustDough.Add PlumTomatoSauce.Bake for 25 minutes at 350 Cutting the pizza into diagonal slices Place pizza in official PizzaStore box Tom ordered a Chicago Style Cheese Pizza 工厂方法:类图名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 9 页 -6 class Class Modeljava.lang.ObjectPizzaStore#createPizza(String):Pizza+orderPizza(String):Pizza+PizzaStore():voidjava.lang.ObjectPizza dough:String name:String sauce:String toppings:ArrayList bake():void box():void cut():void+Pizza():void prepare():void setName(String):void?property get?getname():StringPizzaNYStyleVeggiePizza+NYStyleVeggiePizza():voidPizzaNYStyleCheesePizza+NYStyleCheesePizza():voidPizzaStoreNYPizzaStore#createPizza(String):Pizza+NYPizzaStore():voidPizzaChicagoStyleVeggiePizza+ChicagoStyleVeggiePizza():voidPizzaChicagoStyleCheesePizza+ChicagoStyleCheesePizza():void cut():voidPizzaStoreChicagoPizzaStore+ChicagoPizzaStore():void#createPizza(String):Pizza代码import java.util.ArrayList;public abstract class Pizza String name;String dough;String sauce;ArrayList toppings=new ArrayList();void prepare()System.out.println(Preparing+name);System.out.println(Tossing dough.);System.out.println(Adding sauce.);System.out.println(Adding toppings:);for(int i=0;itoppings.size();i+)System.out.println(+toppings.get(i);void bake()System.out.println(Bake for 25 minutes at 350);void cut()System.out.println(Cutting the pizza into diagonal slices);void box()System.out.println(Place pizza in official PizzaStore box);void setName(String name)this.name=name;名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 9 页 -7 String getname()return name;public class ChicagoStyleCheesePizza extends Pizza public ChicagoStyleCheesePizza()name=Chicago Style Deep Dish Cheese Pizza;dough=Extra Thick Crust Dough;sauce=Plum Tomato Sauce;toppings.add(Shredded Mozzarella Cheese);void cut()System.out.println(Cutting the pizza into square slices);public class ChicagoStyleVeggiePizza extends Pizza public ChicagoStyleV eggiePizza()name=Chigago Style veggie Pizza;dough=Extra Thick Crust Dough;sauce=Plum Tomato Sauce;toppings.add(BlackOlives);toppings.add(Eggplant);public class NYStyleCheesePizza extends Pizzapublic NYStyleCheesePizza()name=NYStyle Sauce and Cheese Pizza;dough=Thin Crust Dough;sauce=Marinara Sauce;toppings.add(Grated Reggiano Cheese);public class NYStyleV eggiePizza extends Pizzapublic NYStyleV eggiePizza()name=New York Style veggie Pizza;dough=Thin Crust Dough;sauce=Marinara Sauce;toppings.add(Garlic);toppings.add(Onion);toppings.add(Mushroom);public abstract class PizzaStore public Pizza orderPizza(String type)Pizza pizza;pizza=createPizza(type);pizza.prepare();pizza.bake();pizza.cut();pizza.box();return pizza;protected abstract Pizza createPizza(String type);public class ChicagoPizzaStore extends PizzaStore protected Pizza createPizza(String item)Pizza pizza=null;if(item.equals(cheese)pizza=new ChicagoStyleCheesePizza();else if(item.equals(veggie)pizza=new ChicagoStyleVeggiePizza();return pizza;public class NYPizzaStore extends PizzaStore protected Pizza createPizza(String item)Pizza pizza=null;if(item.equals(cheese)pizza=new NYStyleCheesePizza();else if(item.equals(veggie)pizza=new NYStyleV eggiePizza();return pizza;public class PizzaTestDrive public static void main(String args)名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 9 页 -8 PizzaStore nyStore=new NYPizzaStore();PizzaStore chicagoStore=new ChicagoPizzaStore();Pizza pizza=nyStore.orderPizza(cheese);System.out.println(Ethan ordered a+pizza.getname()+n);pizza=chicagoStore.orderPizza(veggie);System.out.println(Joel ordered a+pizza.getname()+n);pizza=nyStore.orderPizza(veggie);System.out.println(Mul ordered a+pizza.getname()+n);pizza=chicagoStore.orderPizza(cheese);System.out.println(Tom ordered a+pizza.getname()+n);测试结果:Preparing NY Style Sauce and Cheese Pizza Tossing dough.Adding sauce.Adding toppings:Grated Reggiano Cheese Bake for 25 minutes at 350 Cutting the pizza into diagonal slices Place pizza in official PizzaStore box Ethan ordered a NY Style Sauce and Cheese Pizza Preparing Chigago Style veggie Pizza Tossing dough.Adding sauce.Adding toppings:BlackOlives Eggplant Bake for 25 minutes at 350 Cutting the pizza into diagonal slices Place pizza in official PizzaStore box Joel ordered a Chigago Style veggie Pizza Preparing New York Style veggie Pizza Tossing dough.Adding sauce.Adding toppings:Garlic Onion Mushroom Bake for 25 minutes at 350 Cutting the pizza into diagonal slices Place pizza in official PizzaStore box Mul ordered a New York Style veggie Pizza Preparing Chicago Style Deep Dish Cheese Pizza Tossing dough.Adding sauce.名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 9 页 -9 Adding toppings:Shredded Mozzarella Cheese Bake for 25 minutes at 350 Cutting the pizza into square slices Place pizza in official PizzaStore box Tom ordered a Chicago Style Deep Dish Cheese Pizza 名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 9 页 -
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!