From 7c0cb85632570a8894db1dab08a1937d11cb7925 Mon Sep 17 00:00:00 2001 From: Peter Hertkorn <peter.hertkorn@reutlingen-university.de> Date: Fri, 9 Oct 2020 21:28:54 +0200 Subject: [PATCH] Add factory method for pattern --- src/pizzeria/ChicagoPizzaFactory.java | 21 ---------- src/pizzeria/ChicagoPizzaStore.java | 28 ++++++------- src/pizzeria/ChicagoStyleCheesePizza.java | 2 +- src/pizzeria/ChicagoStyleClamPizza.java | 2 +- src/pizzeria/ChicagoStylePepperoniPizza.java | 2 +- src/pizzeria/ChicagoStyleVeggiePizza.java | 2 +- src/pizzeria/NYPizzaFactory.java | 21 ---------- src/pizzeria/NYPizzaStore.java | 35 ++++++----------- src/pizzeria/Pizza.java | 41 ++++++++++++-------- src/pizzeria/PizzaStore.java | 16 ++++++++ src/pizzeria/PizzaTestDrive.java | 32 ++++++++++----- 11 files changed, 90 insertions(+), 112 deletions(-) delete mode 100644 src/pizzeria/ChicagoPizzaFactory.java delete mode 100644 src/pizzeria/NYPizzaFactory.java create mode 100644 src/pizzeria/PizzaStore.java diff --git a/src/pizzeria/ChicagoPizzaFactory.java b/src/pizzeria/ChicagoPizzaFactory.java deleted file mode 100644 index 7ec9648..0000000 --- a/src/pizzeria/ChicagoPizzaFactory.java +++ /dev/null @@ -1,21 +0,0 @@ -package pizzeria; - -public class ChicagoPizzaFactory { - - public Pizza createPizza(String type) { - Pizza pizza = null; - - if (type.equals("cheese")) { - pizza = new ChicagoStyleCheesePizza(); - } else if (type.equals("pepperoni")) { - pizza = new ChicagoStylePepperoniPizza(); - } else if (type.equals("clam")) { - pizza = new ChicagoStyleClamPizza(); - } else if (type.equals("veggie")) { - pizza = new ChicagoStyleVeggiePizza(); - } - return pizza; - } - -} - diff --git a/src/pizzeria/ChicagoPizzaStore.java b/src/pizzeria/ChicagoPizzaStore.java index 2288121..22851d2 100644 --- a/src/pizzeria/ChicagoPizzaStore.java +++ b/src/pizzeria/ChicagoPizzaStore.java @@ -1,22 +1,16 @@ package pizzeria; -public class ChicagoPizzaStore { - ChicagoPizzaFactory factory; - - public ChicagoPizzaStore(ChicagoPizzaFactory factory) { - this.factory = factory; - } - - public Pizza orderPizza(String type) { - Pizza pizza; - - pizza = factory.createPizza(type); - - pizza.prepare(); - pizza.bake(); - //pizza.cut(); - pizza.box(); +public class ChicagoPizzaStore extends PizzaStore { - return pizza; + Pizza createPizza(String item) { + if (item.equals("cheese")) { + return new ChicagoStyleCheesePizza(); + } else if (item.equals("veggie")) { + return new ChicagoStyleVeggiePizza(); + } else if (item.equals("clam")) { + return new ChicagoStyleClamPizza(); + } else if (item.equals("pepperoni")) { + return new ChicagoStylePepperoniPizza(); + } else return null; } } diff --git a/src/pizzeria/ChicagoStyleCheesePizza.java b/src/pizzeria/ChicagoStyleCheesePizza.java index 9708ec5..83b26ee 100644 --- a/src/pizzeria/ChicagoStyleCheesePizza.java +++ b/src/pizzeria/ChicagoStyleCheesePizza.java @@ -10,7 +10,7 @@ public class ChicagoStyleCheesePizza extends Pizza { toppings.add("Shredded Mozzarella Cheese"); } - public void cut() { + void cut() { System.out.println("Cutting the pizza into square slices"); } } diff --git a/src/pizzeria/ChicagoStyleClamPizza.java b/src/pizzeria/ChicagoStyleClamPizza.java index 2216bbe..9999b8b 100644 --- a/src/pizzeria/ChicagoStyleClamPizza.java +++ b/src/pizzeria/ChicagoStyleClamPizza.java @@ -10,7 +10,7 @@ public class ChicagoStyleClamPizza extends Pizza { toppings.add("Frozen Clams from Chesapeake Bay"); } - public void cut() { + void cut() { System.out.println("Cutting the pizza into square slices"); } } diff --git a/src/pizzeria/ChicagoStylePepperoniPizza.java b/src/pizzeria/ChicagoStylePepperoniPizza.java index 4618e68..ad85beb 100644 --- a/src/pizzeria/ChicagoStylePepperoniPizza.java +++ b/src/pizzeria/ChicagoStylePepperoniPizza.java @@ -13,7 +13,7 @@ public class ChicagoStylePepperoniPizza extends Pizza { toppings.add("Sliced Pepperoni"); } - public void cut() { + void cut() { System.out.println("Cutting the pizza into square slices"); } } diff --git a/src/pizzeria/ChicagoStyleVeggiePizza.java b/src/pizzeria/ChicagoStyleVeggiePizza.java index 9f22708..52f5968 100644 --- a/src/pizzeria/ChicagoStyleVeggiePizza.java +++ b/src/pizzeria/ChicagoStyleVeggiePizza.java @@ -12,7 +12,7 @@ public class ChicagoStyleVeggiePizza extends Pizza { toppings.add("Eggplant"); } - public void cut() { + void cut() { System.out.println("Cutting the pizza into square slices"); } } diff --git a/src/pizzeria/NYPizzaFactory.java b/src/pizzeria/NYPizzaFactory.java deleted file mode 100644 index 6d6402a..0000000 --- a/src/pizzeria/NYPizzaFactory.java +++ /dev/null @@ -1,21 +0,0 @@ -package pizzeria; - -public class NYPizzaFactory { - - public Pizza createPizza(String type) { - Pizza pizza = null; - - if (type.equals("cheese")) { - pizza = new NYStyleCheesePizza(); - } else if (type.equals("pepperoni")) { - pizza = new NYStylePepperoniPizza(); - } else if (type.equals("clam")) { - pizza = new NYStyleClamPizza(); - } else if (type.equals("veggie")) { - pizza = new NYStyleVeggiePizza(); - } - return pizza; - } - -} - diff --git a/src/pizzeria/NYPizzaStore.java b/src/pizzeria/NYPizzaStore.java index 6b4ce8a..9c940c8 100644 --- a/src/pizzeria/NYPizzaStore.java +++ b/src/pizzeria/NYPizzaStore.java @@ -1,28 +1,17 @@ package pizzeria; -public class NYPizzaStore { - NYPizzaFactory factory; - - public NYPizzaStore(NYPizzaFactory factory) { - this.factory = factory; - } - - public Pizza orderPizza(String type) { - Pizza pizza; - - pizza = factory.createPizza(type); - - pizza.prepare(); - pizza.bake(); - pizza.cut(); - //pizza.box(); - nyBox(pizza); - - return pizza; - } - - public void nyBox(Pizza pizza) { - System.out.println("NY style boxing " + pizza.name); +public class NYPizzaStore extends PizzaStore { + + Pizza createPizza(String item) { + if (item.equals("cheese")) { + return new NYStyleCheesePizza(); + } else if (item.equals("veggie")) { + return new NYStyleVeggiePizza(); + } else if (item.equals("clam")) { + return new NYStyleClamPizza(); + } else if (item.equals("pepperoni")) { + return new NYStylePepperoniPizza(); + } else return null; } } diff --git a/src/pizzeria/Pizza.java b/src/pizzeria/Pizza.java index 1d25eb2..65e3e4c 100644 --- a/src/pizzeria/Pizza.java +++ b/src/pizzeria/Pizza.java @@ -2,34 +2,39 @@ package pizzeria; import java.util.ArrayList; -abstract public class Pizza { +public abstract class Pizza { String name; String dough; String sauce; ArrayList<String> toppings = new ArrayList<String>(); - - public String getName() { - return name; - } - - public void prepare() { + + 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; i < toppings.size(); i++) { + System.out.println(" " + toppings.get(i)); + } } - - public void bake() { - System.out.println("Baking " + name); + + void bake() { + System.out.println("Bake for 25 minutes at 350"); } - - public void cut() { - System.out.println("Cutting " + name); + + void cut() { + System.out.println("Cutting the pizza into diagonal slices"); } - - public void box() { - System.out.println("Boxing " + name); + + void box() { + System.out.println("Place pizza in official PizzaStore box"); + } + + public String getName() { + return name; } public String toString() { - // code to display pizza name and ingredients StringBuffer display = new StringBuffer(); display.append("---- " + name + " ----\n"); display.append(dough + "\n"); @@ -41,3 +46,5 @@ abstract public class Pizza { } } + + diff --git a/src/pizzeria/PizzaStore.java b/src/pizzeria/PizzaStore.java new file mode 100644 index 0000000..38b89ec --- /dev/null +++ b/src/pizzeria/PizzaStore.java @@ -0,0 +1,16 @@ +package pizzeria; + +public abstract class PizzaStore { + + abstract Pizza createPizza(String item); + + public final Pizza orderPizza(String type) { + Pizza pizza = createPizza(type); + System.out.println("--- Making a " + pizza.getName() + " ---"); + pizza.prepare(); + pizza.bake(); + pizza.cut(); + pizza.box(); + return pizza; + } +} diff --git a/src/pizzeria/PizzaTestDrive.java b/src/pizzeria/PizzaTestDrive.java index 23bb505..a4ce31a 100644 --- a/src/pizzeria/PizzaTestDrive.java +++ b/src/pizzeria/PizzaTestDrive.java @@ -3,17 +3,31 @@ package pizzeria; public class PizzaTestDrive { public static void main(String[] args) { - NYPizzaFactory nyFactory = new NYPizzaFactory(); - NYPizzaStore nyStore = new NYPizzaStore(nyFactory); - + PizzaStore nyStore = new NYPizzaStore(); + PizzaStore chicagoStore = new ChicagoPizzaStore(); + Pizza pizza = nyStore.orderPizza("cheese"); - System.out.println("We ordered a " + pizza.getName() + "\n"); + System.out.println("Ethan ordered a " + pizza.getName() + "\n"); - ChicagoPizzaFactory chicagoFactory = new ChicagoPizzaFactory(); - ChicagoPizzaStore chicagoStore = new ChicagoPizzaStore(chicagoFactory); - - pizza = chicagoStore.orderPizza("veggie"); - System.out.println("We ordered a " + pizza.getName() + "\n"); + pizza = chicagoStore.orderPizza("cheese"); + System.out.println("Joel ordered a " + pizza.getName() + "\n"); + + pizza = nyStore.orderPizza("clam"); + System.out.println("Ethan ordered a " + pizza.getName() + "\n"); + + pizza = chicagoStore.orderPizza("clam"); + System.out.println("Joel ordered a " + pizza.getName() + "\n"); + pizza = nyStore.orderPizza("pepperoni"); + System.out.println("Ethan ordered a " + pizza.getName() + "\n"); + + pizza = chicagoStore.orderPizza("pepperoni"); + System.out.println("Joel ordered a " + pizza.getName() + "\n"); + + pizza = nyStore.orderPizza("veggie"); + System.out.println("Ethan ordered a " + pizza.getName() + "\n"); + + pizza = chicagoStore.orderPizza("veggie"); + System.out.println("Joel ordered a " + pizza.getName() + "\n"); } } -- GitLab