简单工厂模式(simpleFactory pattern)(披萨)

 

定义:将创建对象的任务委托给工厂类

笔记:降低耦合。

 

 

披萨抽象类

package com.tj.simpleFactory.pizza; import java.util.ArrayList; abstract public class Pizza { String name; String dough; String sauce; ArrayList<String> toppings = new ArrayList<String>(); public String getName() { return name; } public void prepare() { System.out.println("Preparing " + name); } public void bake() { System.out.println("Baking " + name); } public void cut() { System.out.println("Cutting " + name); } public void box() { System.out.println("Boxing " + name); } public String toString() { // code to display pizza name and ingredients StringBuffer display = new StringBuffer(); display.append("---- " + name + " ----/n"); display.append(dough + "/n"); display.append(sauce + "/n"); for (int i = 0; i < toppings.size(); i++) { System.out.println("in pizza.java" + i); display.append(toppings.get(i) + "/n"); } return display.toString(); } }  

 

披萨实现类1,CheesePizza

package com.tj.simpleFactory.pizza; public class CheesePizza extends Pizza { public CheesePizza() { name = "Cheese Pizza"; dough = "Regular Crust"; sauce = "Marinara Pizza Sauce"; toppings.add("Fresh Mozzarella"); toppings.add("Parmesan"); } } 

 

披萨实现类2,ClamPizza

package com.tj.simpleFactory.pizza; public class ClamPizza extends Pizza { public ClamPizza() { name = "Clam Pizza"; dough = "Thin crust"; sauce = "White garlic sauce"; toppings.add("Clams"); toppings.add("Grated parmesan cheese"); } } 

 

披萨实现类3,PepperoniPizza

package com.tj.simpleFactory.pizza; public class PepperoniPizza extends Pizza { public PepperoniPizza() { name = "Pepperoni Pizza"; dough = "Crust"; sauce = "Marinara sauce"; toppings.add("Sliced Pepperoni"); toppings.add("Sliced Onion"); toppings.add("Grated parmesan cheese"); } } 

 

披萨实现类4,VeggiePizza

package com.tj.simpleFactory.pizza; public class VeggiePizza extends Pizza { public VeggiePizza() { name = "Veggie Pizza"; dough = "Crust"; sauce = "Marinara sauce"; toppings.add("Shredded mozzarella"); toppings.add("Grated parmesan"); toppings.add("Diced onion"); toppings.add("Sliced mushrooms"); toppings.add("Sliced red pepper"); toppings.add("Sliced black olives"); } } 

 

简单工厂类,创建对象(披萨)

package com.tj.simpleFactory.simpleFactory; import com.tj.simpleFactory.pizza.CheesePizza; import com.tj.simpleFactory.pizza.ClamPizza; import com.tj.simpleFactory.pizza.PepperoniPizza; import com.tj.simpleFactory.pizza.Pizza; import com.tj.simpleFactory.pizza.VeggiePizza; public class SimplePizzaFactory { public Pizza createPizza(String type) { Pizza pizza = null; if (type.equals("cheese")) { pizza = new CheesePizza(); } else if (type.equals("pepperoni")) { pizza = new PepperoniPizza(); } else if (type.equals("clam")) { pizza = new ClamPizza(); } else if (type.equals("veggie")) { pizza = new VeggiePizza(); } return pizza; } }  

 

披萨店类,提供服务

package com.tj.simpleFactory.pizzaStore; import com.tj.simpleFactory.pizza.Pizza; import com.tj.simpleFactory.simpleFactory.SimplePizzaFactory; public class PizzaStore { SimplePizzaFactory factory; public PizzaStore(SimplePizzaFactory factory) { this.factory = factory; } public Pizza orderPizza(String type) { Pizza pizza; pizza = factory.createPizza(type); pizza.prepare(); pizza.bake(); pizza.cut(); pizza.box(); return pizza; } } 

 

应用入口

package com.tj.simpleFactory; import com.tj.simpleFactory.pizza.Pizza; import com.tj.simpleFactory.pizzaStore.PizzaStore; import com.tj.simpleFactory.simpleFactory.SimplePizzaFactory; public class PizzaTestDrive { public static void main(String[] args) { SimplePizzaFactory factory = new SimplePizzaFactory(); PizzaStore store = new PizzaStore(factory); Pizza pizza = store.orderPizza("cheese"); System.out.println("We ordered a " + pizza.getName() + "/n"); System.out.println("=========================================================="); System.out.println(); pizza = store.orderPizza("veggie"); System.out.println("We ordered a " + pizza.getName() + "/n"); } } 

 

你可能感兴趣的:(String,Class,任务)