效果
出海打鱼~~~~烤 25 分钟切成6片装箱[海鲜披萨 杭州出品]制作完成准备食材烤 25 分钟切片,铺上芝士装箱[芝士披萨 杭州出品]制作完成做不出来,只能用普通披萨代替准备食材烤 25 分钟切成6片装箱[普通披萨 杭州出品]制作完成出海打鱼~~~~烤 25 分钟切成6片装箱[海鲜披萨 福建出品]制作完成做不出来,只能用普通披萨代替准备食材烤 25 分钟切成6片装箱[普通披萨 福建出品]制作完成准备食材烤 25 分钟切成6片火箭打包----发射![火箭披萨 福建出品]制作完成
介绍
主要是增加了加盟这个选项,
将工厂变为抽象类,
每个地方都建个分店。
完整代码
package factoryMode;import java.util.ArrayList;class Pizza{public String name;public String dough;public String sauce;public Pizza() {// TODO Auto-generated constructor stubname = "普通披萨";}void prepare() {System.out.println("准备食材");}void bake() {System.out.println("烤 25 分钟");}void cut() {System.out.println("切成6片");}void box() {System.out.println("装箱");System.out.println("[" + name + "]" +"制作完成");}}abstract class PizzaStore{String StoreName;public Pizza OrderPizza(String type){Pizza pizza = CreatePizza(type);pizza.prepare();pizza.bake();pizza.cut();pizza.box();return pizza;}public abstract Pizza CreatePizza(String type);}class HanzhouPizzaStore extends PizzaStore{public HanzhouPizzaStore() {// TODO Auto-generated constructor stubStoreName = "杭州分店";}@Overridepublic Pizza CreatePizza(String type) {// TODO Auto-generated method stubPizza pizza=null;switch(type){case "海鲜披萨":pizza = new SeafoodPizza();break;case "芝士披萨":pizza=new CheesePizza();break;default :pizza = new Pizza();System.out.println("做不出来,只能用普通披萨代替");break;}pizza.name += " 杭州出品";return pizza;}}class FujianPizzaStore extends PizzaStore{public FujianPizzaStore() {// TODO Auto-generated constructor stubStoreName = "福建分店";}@Overridepublic Pizza CreatePizza(String type) {// TODO Auto-generated method stubPizza pizza=null;switch(type){case "海鲜披萨":pizza = new SeafoodPizza();break;case "火箭披萨":pizza=new RocketPizza();break;default :pizza = new Pizza();System.out.println("做不出来,只能用普通披萨代替");break;}pizza.name += " 福建出品";return pizza;}}class SeafoodPizza extends Pizza{public SeafoodPizza() {name = "海鲜披萨";}void prepare() {System.out.println("出海打鱼~~~~");}}class CheesePizza extends Pizza{public CheesePizza() {name = "芝士披萨";}void cut() {System.out.println("切片,铺上芝士");}}class RocketPizza extends Pizza{public RocketPizza() {name = "火箭披萨";}void box() {System.out.println("火箭打包----发射!");System.out.println("[" + name + "]" +"制作完成");}}public class main {static public void main(String[] args) {HanzhouPizzaStore pizzaStore1 = new HanzhouPizzaStore();pizzaStore1.OrderPizza("海鲜披萨");pizzaStore1.OrderPizza("芝士披萨");pizzaStore1.OrderPizza("火箭披萨");FujianPizzaStore pizzaStore2 = new FujianPizzaStore();pizzaStore2.OrderPizza("海鲜披萨");pizzaStore2.OrderPizza("芝士披萨");pizzaStore2.OrderPizza("火箭披萨");}}
