diff --git a/src/pizzeria/ingredients/ChicagoPizzaIngredientFactory.java b/src/pizzeria/ingredients/ChicagoPizzaIngredientFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..7a3a3c78926200f9e65ad8007296b08030160a0c --- /dev/null +++ b/src/pizzeria/ingredients/ChicagoPizzaIngredientFactory.java @@ -0,0 +1,33 @@ +package pizzeria.ingredients; + +public class ChicagoPizzaIngredientFactory + implements PizzaIngredientFactory +{ + + public Dough createDough() { + return new ThickCrustDough(); + } + + public Sauce createSauce() { + return new PlumTomatoSauce(); + } + + public Cheese createCheese() { + return new MozzarellaCheese(); + } + + public Veggies[] createVeggies() { + Veggies veggies[] = { new BlackOlives(), + new Spinach(), + new Eggplant() }; + return veggies; + } + + public Pepperoni createPepperoni() { + return new SlicedPepperoni(); + } + + public Clams createClam() { + return new FrozenClams(); + } +} diff --git a/src/pizzeria/ingredients/NYPizzaIngredientFactory.java b/src/pizzeria/ingredients/NYPizzaIngredientFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..6e1e8fc25686759624b3597f91162ea700c8fe8e --- /dev/null +++ b/src/pizzeria/ingredients/NYPizzaIngredientFactory.java @@ -0,0 +1,29 @@ +package pizzeria.ingredients; + +public class NYPizzaIngredientFactory implements PizzaIngredientFactory { + + public Dough createDough() { + return new ThinCrustDough(); + } + + public Sauce createSauce() { + return new MarinaraSauce(); + } + + public Cheese createCheese() { + return new ReggianoCheese(); + } + + public Veggies[] createVeggies() { + Veggies veggies[] = { new Garlic(), new Onion(), new Mushroom(), new RedPepper() }; + return veggies; + } + + public Pepperoni createPepperoni() { + return new SlicedPepperoni(); + } + + public Clams createClam() { + return new FreshClams(); + } +} diff --git a/src/pizzeria/ingredients/PizzaIngredientFactory.java b/src/pizzeria/ingredients/PizzaIngredientFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..e1240c16e0dd2aa5723498a9415fc12a15d854ee --- /dev/null +++ b/src/pizzeria/ingredients/PizzaIngredientFactory.java @@ -0,0 +1,12 @@ +package pizzeria.ingredients; + +public interface PizzaIngredientFactory { + + public Dough createDough(); + public Sauce createSauce(); + public Cheese createCheese(); + public Veggies[] createVeggies(); + public Pepperoni createPepperoni(); + public Clams createClam(); + +} diff --git a/src/pizzeria/pizza/CheesePizza.java b/src/pizzeria/pizza/CheesePizza.java new file mode 100644 index 0000000000000000000000000000000000000000..6d2bd8fffedd606c4a00bf33e7a14b31261c7253 --- /dev/null +++ b/src/pizzeria/pizza/CheesePizza.java @@ -0,0 +1,17 @@ +package pizzeria.pizza; + +import pizzeria.ingredients.PizzaIngredientFactory; + +public class CheesePizza extends Pizza { + + public CheesePizza(PizzaIngredientFactory ingredientFactory) { + this.ingredientFactory = ingredientFactory; + } + + public void prepare() { + System.out.println("Preparing " + name); + dough = ingredientFactory.createDough(); + sauce = ingredientFactory.createSauce(); + cheese = ingredientFactory.createCheese(); + } +} diff --git a/src/pizzeria/pizza/ChicagoStyleCheesePizza.java b/src/pizzeria/pizza/ChicagoStyleCheesePizza.java deleted file mode 100644 index c37121ca49b2d12575e045b1a07ef4883620067c..0000000000000000000000000000000000000000 --- a/src/pizzeria/pizza/ChicagoStyleCheesePizza.java +++ /dev/null @@ -1,16 +0,0 @@ -package pizzeria.pizza; - -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"); - } - - public void cut() { - System.out.println("Cutting the pizza into square slices"); - } -} diff --git a/src/pizzeria/pizza/ChicagoStyleClamPizza.java b/src/pizzeria/pizza/ChicagoStyleClamPizza.java deleted file mode 100644 index c5bae9661bb8c43b51b35ef38663724afabf6e42..0000000000000000000000000000000000000000 --- a/src/pizzeria/pizza/ChicagoStyleClamPizza.java +++ /dev/null @@ -1,16 +0,0 @@ -package pizzeria.pizza; - -public class ChicagoStyleClamPizza extends Pizza { - public ChicagoStyleClamPizza() { - name = "Chicago Style Clam Pizza"; - dough = "Extra Thick Crust Dough"; - sauce = "Plum Tomato Sauce"; - - toppings.add("Shredded Mozzarella Cheese"); - toppings.add("Frozen Clams from Chesapeake Bay"); - } - - public void cut() { - System.out.println("Cutting the pizza into square slices"); - } -} diff --git a/src/pizzeria/pizza/ChicagoStylePepperoniPizza.java b/src/pizzeria/pizza/ChicagoStylePepperoniPizza.java deleted file mode 100644 index ae37b1f5dac81aa072440510223015b387141680..0000000000000000000000000000000000000000 --- a/src/pizzeria/pizza/ChicagoStylePepperoniPizza.java +++ /dev/null @@ -1,19 +0,0 @@ -package pizzeria.pizza; - -public class ChicagoStylePepperoniPizza extends Pizza { - public ChicagoStylePepperoniPizza() { - name = "Chicago Style Pepperoni Pizza"; - dough = "Extra Thick Crust Dough"; - sauce = "Plum Tomato Sauce"; - - toppings.add("Shredded Mozzarella Cheese"); - toppings.add("Black Olives"); - toppings.add("Spinach"); - toppings.add("Eggplant"); - toppings.add("Sliced Pepperoni"); - } - - public void cut() { - System.out.println("Cutting the pizza into square slices"); - } -} diff --git a/src/pizzeria/pizza/ChicagoStyleVeggiePizza.java b/src/pizzeria/pizza/ChicagoStyleVeggiePizza.java deleted file mode 100644 index 546b1688bf40591c46782802746c5ae45ec4f27d..0000000000000000000000000000000000000000 --- a/src/pizzeria/pizza/ChicagoStyleVeggiePizza.java +++ /dev/null @@ -1,18 +0,0 @@ -package pizzeria.pizza; - -public class ChicagoStyleVeggiePizza extends Pizza { - public ChicagoStyleVeggiePizza() { - name = "Chicago Deep Dish Veggie Pizza"; - dough = "Extra Thick Crust Dough"; - sauce = "Plum Tomato Sauce"; - - toppings.add("Shredded Mozzarella Cheese"); - toppings.add("Black Olives"); - toppings.add("Spinach"); - toppings.add("Eggplant"); - } - - public void cut() { - System.out.println("Cutting the pizza into square slices"); - } -} diff --git a/src/pizzeria/pizza/ClamPizza.java b/src/pizzeria/pizza/ClamPizza.java new file mode 100644 index 0000000000000000000000000000000000000000..6ab93ea334f907e9ee6f1a3c6ef2e8854d5fd0f1 --- /dev/null +++ b/src/pizzeria/pizza/ClamPizza.java @@ -0,0 +1,18 @@ +package pizzeria.pizza; + +import pizzeria.ingredients.PizzaIngredientFactory; + +public class ClamPizza extends Pizza { + + public ClamPizza(PizzaIngredientFactory ingredientFactory) { + this.ingredientFactory = ingredientFactory; + } + + public void prepare() { + System.out.println("Preparing " + name); + dough = ingredientFactory.createDough(); + sauce = ingredientFactory.createSauce(); + cheese = ingredientFactory.createCheese(); + clam = ingredientFactory.createClam(); + } +} diff --git a/src/pizzeria/pizza/NYStyleCheesePizza.java b/src/pizzeria/pizza/NYStyleCheesePizza.java deleted file mode 100644 index ac5055d672f008a25675b3d6ed2dbe10cfdfa11f..0000000000000000000000000000000000000000 --- a/src/pizzeria/pizza/NYStyleCheesePizza.java +++ /dev/null @@ -1,12 +0,0 @@ -package pizzeria.pizza; - -public class NYStyleCheesePizza extends Pizza { - - public NYStyleCheesePizza() { - name = "NY Style Sauce and Cheese Pizza"; - dough = "Thin Crust Dough"; - sauce = "Marinara Sauce"; - - toppings.add("Grated Reggiano Cheese"); - } -} diff --git a/src/pizzeria/pizza/NYStyleClamPizza.java b/src/pizzeria/pizza/NYStyleClamPizza.java deleted file mode 100644 index b6635b049990cbf728718dc73020e4ab2af40031..0000000000000000000000000000000000000000 --- a/src/pizzeria/pizza/NYStyleClamPizza.java +++ /dev/null @@ -1,13 +0,0 @@ -package pizzeria.pizza; - -public class NYStyleClamPizza extends Pizza { - - public NYStyleClamPizza() { - name = "NY Style Clam Pizza"; - dough = "Thin Crust Dough"; - sauce = "Marinara Sauce"; - - toppings.add("Grated Reggiano Cheese"); - toppings.add("Fresh Clams from Long Island Sound"); - } -} diff --git a/src/pizzeria/pizza/NYStylePepperoniPizza.java b/src/pizzeria/pizza/NYStylePepperoniPizza.java deleted file mode 100644 index f036f6813cb76c16df31b40cee8cefda6d14522d..0000000000000000000000000000000000000000 --- a/src/pizzeria/pizza/NYStylePepperoniPizza.java +++ /dev/null @@ -1,17 +0,0 @@ -package pizzeria.pizza; - -public class NYStylePepperoniPizza extends Pizza { - - public NYStylePepperoniPizza() { - name = "NY Style Pepperoni Pizza"; - dough = "Thin Crust Dough"; - sauce = "Marinara Sauce"; - - toppings.add("Grated Reggiano Cheese"); - toppings.add("Sliced Pepperoni"); - toppings.add("Garlic"); - toppings.add("Onion"); - toppings.add("Mushrooms"); - toppings.add("Red Pepper"); - } -} diff --git a/src/pizzeria/pizza/NYStyleVeggiePizza.java b/src/pizzeria/pizza/NYStyleVeggiePizza.java deleted file mode 100644 index e3d5247ab4104f2b4efde93b248872fc5342d0c2..0000000000000000000000000000000000000000 --- a/src/pizzeria/pizza/NYStyleVeggiePizza.java +++ /dev/null @@ -1,16 +0,0 @@ -package pizzeria.pizza; - -public class NYStyleVeggiePizza extends Pizza { - - public NYStyleVeggiePizza() { - name = "NY Style Veggie Pizza"; - dough = "Thin Crust Dough"; - sauce = "Marinara Sauce"; - - toppings.add("Grated Reggiano Cheese"); - toppings.add("Garlic"); - toppings.add("Onion"); - toppings.add("Mushrooms"); - toppings.add("Red Pepper"); - } -} diff --git a/src/pizzeria/ingredients/PepperoniPizza.java b/src/pizzeria/pizza/PepperoniPizza.java similarity index 81% rename from src/pizzeria/ingredients/PepperoniPizza.java rename to src/pizzeria/pizza/PepperoniPizza.java index 9345487cefee2590b91409284901679e7265fbd9..aace5f558a91f7c4484cb107bd442548f93f36e6 100644 --- a/src/pizzeria/ingredients/PepperoniPizza.java +++ b/src/pizzeria/pizza/PepperoniPizza.java @@ -1,4 +1,6 @@ -package pizzeria.ingredients; +package pizzeria.pizza; + +import pizzeria.ingredients.PizzaIngredientFactory; public class PepperoniPizza extends Pizza { @@ -6,7 +8,7 @@ public class PepperoniPizza extends Pizza { this.ingredientFactory = ingredientFactory; } - void prepare() { + public void prepare() { System.out.println("Preparing " + name); dough = ingredientFactory.createDough(); sauce = ingredientFactory.createSauce(); diff --git a/src/pizzeria/pizza/Pizza.java b/src/pizzeria/pizza/Pizza.java index 191fc04ede4cf637bce0cf41d31c6f17b220269e..e23062acb1de101ea994aef794cfbd18d1612f57 100644 --- a/src/pizzeria/pizza/Pizza.java +++ b/src/pizzeria/pizza/Pizza.java @@ -1,50 +1,73 @@ package pizzeria.pizza; -import java.util.ArrayList; +import pizzeria.ingredients.PizzaIngredientFactory; +import pizzeria.ingredients.*; public abstract class Pizza { + PizzaIngredientFactory ingredientFactory; String name; - String dough; - String sauce; - ArrayList<String> toppings = new ArrayList<String>(); - - public 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)); - } - } - + + Dough dough; + Sauce sauce; + Veggies veggies[]; + Cheese cheese; + Pepperoni pepperoni; + Clams clam; + + public abstract void prepare(); + public void bake() { System.out.println("Bake for 25 minutes at 350"); } - + public void cut() { System.out.println("Cutting the pizza into diagonal slices"); } - + public void box() { System.out.println("Place pizza in official PizzaStore box"); } - + + public void setName(String name) { + this.name = name; + } + public String getName() { return name; } public String toString() { - StringBuffer display = new StringBuffer(); - display.append("---- " + name + " ----\n"); - display.append(dough + "\n"); - display.append(sauce + "\n"); - for (int i = 0; i < toppings.size(); i++) { - display.append((String )toppings.get(i) + "\n"); + StringBuffer result = new StringBuffer(); + result.append("---- " + name + " ----\n"); + if (dough != null) { + result.append(dough); + result.append("\n"); + } + if (sauce != null) { + result.append(sauce); + result.append("\n"); + } + if (cheese != null) { + result.append(cheese); + result.append("\n"); } - return display.toString(); + if (veggies != null) { + for (int i = 0; i < veggies.length; i++) { + result.append(veggies[i]); + if (i < veggies.length-1) { + result.append(", "); + } + } + result.append("\n"); + } + if (clam != null) { + result.append(clam); + result.append("\n"); + } + if (pepperoni != null) { + result.append(pepperoni); + result.append("\n"); + } + return result.toString(); } } - - - diff --git a/src/pizzeria/pizza/VeggiePizza.java b/src/pizzeria/pizza/VeggiePizza.java new file mode 100644 index 0000000000000000000000000000000000000000..bf65a936b0b13ff91b72e22350f9cfe4f4bfff33 --- /dev/null +++ b/src/pizzeria/pizza/VeggiePizza.java @@ -0,0 +1,18 @@ +package pizzeria.pizza; + +import pizzeria.ingredients.PizzaIngredientFactory; + +public class VeggiePizza extends Pizza { + + public VeggiePizza(PizzaIngredientFactory ingredientFactory) { + this.ingredientFactory = ingredientFactory; + } + + public void prepare() { + System.out.println("Preparing " + name); + dough = ingredientFactory.createDough(); + sauce = ingredientFactory.createSauce(); + cheese = ingredientFactory.createCheese(); + veggies = ingredientFactory.createVeggies(); + } +} diff --git a/src/pizzeria/store/ChicagoPizzaStore.java b/src/pizzeria/store/ChicagoPizzaStore.java index b3518a91b6cac78aa29f3564238b9a772c5ad1fc..6b1a7e639d371e01a618e69c5106891eef919116 100644 --- a/src/pizzeria/store/ChicagoPizzaStore.java +++ b/src/pizzeria/store/ChicagoPizzaStore.java @@ -1,18 +1,37 @@ package pizzeria.store; +import pizzeria.ingredients.ChicagoPizzaIngredientFactory; +import pizzeria.ingredients.PizzaIngredientFactory; import pizzeria.pizza.*; public class ChicagoPizzaStore extends PizzaStore { - 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; + 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 VeggiePizza(ingredientFactory); + pizza.setName("Chicago Style Veggie Pizza"); + + } else if (item.equals("clam")) { + + pizza = new ClamPizza(ingredientFactory); + pizza.setName("Chicago Style Clam Pizza"); + + } else if (item.equals("pepperoni")) { + + pizza = new PepperoniPizza(ingredientFactory); + pizza.setName("Chicago Style Pepperoni Pizza"); + + } + return pizza; } } diff --git a/src/pizzeria/store/NYPizzaStore.java b/src/pizzeria/store/NYPizzaStore.java index 301ffcb1dd85e5cfd683a9aaefd951c97925a036..f20a415fcf1f17449f715592aa630543c25d56e4 100644 --- a/src/pizzeria/store/NYPizzaStore.java +++ b/src/pizzeria/store/NYPizzaStore.java @@ -1,19 +1,37 @@ package pizzeria.store; +import pizzeria.ingredients.NYPizzaIngredientFactory; +import pizzeria.ingredients.PizzaIngredientFactory; import pizzeria.pizza.*; public class NYPizzaStore extends PizzaStore { - - Pizza createPizza(String item) { + + protected Pizza createPizza(String item) { + Pizza pizza = null; + PizzaIngredientFactory ingredientFactory = + new NYPizzaIngredientFactory(); + if (item.equals("cheese")) { - return new NYStyleCheesePizza(); + + pizza = new CheesePizza(ingredientFactory); + pizza.setName("New York Style Cheese Pizza"); + } else if (item.equals("veggie")) { - return new NYStyleVeggiePizza(); + + pizza = new VeggiePizza(ingredientFactory); + pizza.setName("New York Style Veggie Pizza"); + } else if (item.equals("clam")) { - return new NYStyleClamPizza(); + + pizza = new ClamPizza(ingredientFactory); + pizza.setName("New York Style Clam Pizza"); + } else if (item.equals("pepperoni")) { - return new NYStylePepperoniPizza(); - } else return null; + + pizza = new PepperoniPizza(ingredientFactory); + pizza.setName("New York Style Pepperoni Pizza"); + + } + return pizza; } - } diff --git a/src/pizzeria/store/PizzaStore.java b/src/pizzeria/store/PizzaStore.java index c6833293e0798421f275c548a5a2bafe2c68d708..9fbd59435cb05260970b01b3f08aa00c41d457d3 100644 --- a/src/pizzeria/store/PizzaStore.java +++ b/src/pizzeria/store/PizzaStore.java @@ -4,9 +4,9 @@ import pizzeria.pizza.Pizza; public abstract class PizzaStore { - abstract Pizza createPizza(String item); + protected abstract Pizza createPizza(String item); - public final Pizza orderPizza(String type) { + public Pizza orderPizza(String type) { Pizza pizza = createPizza(type); System.out.println("--- Making a " + pizza.getName() + " ---"); pizza.prepare();