我们仍然以上一货物运输从业资格证篇文章的案例为主,画出抽象工厂模式下的类图。
首先仍然是pizza种类相关的几个类。
package com.szh.factory.abstractfactory.pizza; /** * 声明pizza类为抽象类 */public abstract class pizza { //pizza名称 protected string name; //准备原材料,不同的披萨不一样。因此,我们做成抽象方法,具体的原材料实现交给它的子类去完成 public abstract void prepare(); //烘烤 public void bake() { system.out.println(name + " baking;"); } //切割 public void cut() { system.out.println(name + " cutting;"); } //打包 public void box() { system.out.println(name + " boxing;"); } public void tname(string name) { this.name = name; }}
package com.szh.factory.abstractfactory.pizza; public class ldpep作文网 小学三年级perpizza extends pizza { @overridepublic void prepare() {tname("伦敦的胡椒pizza");system.out.println("伦敦的胡椒pizza 准备原材料");} }
package com.szh.factory.abstractfactory.pizza; public class ldcheepizza extends pizza { @overridepublic void prepare() {tname("伦敦的奶酪pizza");system.out.println("伦敦的奶酪pizza 准备原材料");} }
package com.szh.factory.abstractfactory.pizza; public class bjpepperpizza extends pizza { @overridepublic void prepare() {tname("北京的胡椒pizza");system.out.println("北京的胡椒pizza 准备原材绿豆对肝脏的好处料");} }
package com.szh.factory.abstractfactory.pizza; public class bjcheepizza extends pizza { @overridepublic void prepare() {tname("北京的奶酪pizza");system.out.println("北京的奶酪pizza 准备原材料");} }
下面是抽象工厂和工厂方法的区别之处。
package com.szh.factory.abstractfactory.order; import com.szh.factory.abstractfactory.pizza.pizza; //一个抽象工厂模式的抽象层(接口)public interface absfactory { //让下面的工厂子类来具体实现 public pizza createpizza(string ordertype);}
package com.szh.abstractfactory.order; import com.szh.abstractfactory.pizza.bjcheepizza;import com.szh.abstractfactory.pizza.bjpepperpizza;import com.szh.abstractfactory.pizza.pizza; public class bjfactory implements absfactory { @override public pizza createpizza(string ordertype) { pizza pizza = null; if("chee".equals(ordertype)) { pizza = new bjcheepizza(); } el if ("pepper".equals(ordertype)){ pizza = new bjpepperpizza(); } return pizza; }}
package com.szh.abstractfactory.order; import com.szh.abstractfactory.pizza.ldcheepizza;import com.szh.abstractfactory.pizza.ldpepperpizza;import com.szh.abstractfactory.pizza.pizza; public class ldfactory implements absfactory { @override public pizza createpizza(string ordertype) { pizza pizza = null; if ("chee".equals(ordertype)) { pizza = new ldcheepizza(); } el if ("pepper".equals(ordertype)) { pizza = new ldpepperpizza(); } return pizza; }}
package com.szh.factory.abstractfactory.order; import com.szh.factory.abstractfactory.pizza.pizza; import java.util.scanner; public class orderpizza { absfactory absfactory; public orderpizza(absfactory absfactory) { tfactory(absfactory); } private void tfactory(absfactory absfactory) { pizza pizza = null; string ordertype = ""; // 用户输入 this.absfactory = absfactory; do { ordertype = gettype(); // factory 可能是北京的工厂子类,也可能是伦敦的工厂子类 pizza = absfactory.createpizza(ordertype); if (pizza != null) { // 订购ok pizza.prepare(); pizza.bake(); pizza.cut(); pizza.box(); } el { system.out.println("订购失败"); break; } } while (true); } // 写一个方法,可以获取客户希望订购的披萨种类 private string gettype() { scanner scanner = new scanner(system.in); system.out.println("请输入 pizza 种类: "); string str = scanner.nextline(); return str; }}
最后是测试类。
package com.szh.abstractfactory; import com.szh.abstractfactory.order.bjfactory;import com.szh.abstractfactory.order.ldfactory;import com.szh.abstractf我一言难尽忍不住伤心是什么歌actory.order.orderpizza; import java.util.scanner; public class maintest { public static void main(string[] args) { scanner scanner = new scanner(system.in); string content = scanner.next(); if ("beijing".equals(content)) { new orderpizza(new bjfactory()); } el if ("london".equals(content)) { 山东水利职业学院 new orderpizza(new ldfactory()); } el { system.out.println("无法预先匹配pizza种类...."); scanner.clo(); } }}
到此这篇关于java 深入理解创建型设计模式之抽象工厂模式的文章就介绍到这了,更多相关java 抽象工厂模式内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-05 01:16:55,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/7f7862d7714a6ed9c1c2d6ea01e1657c.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:Java 深入理解创建型设计模式之抽象工厂模式.doc
本文 PDF 下载地址:Java 深入理解创建型设计模式之抽象工厂模式.pdf
留言与评论(共有 0 条评论) |