From 3f6cfafc319a544cba25152c58a1d1a78d740f7e Mon Sep 17 00:00:00 2001 From: Peter Hertkorn <peter.hertkorn@reutlingen-university.de> Date: Fri, 9 Oct 2020 21:18:41 +0200 Subject: [PATCH] Add simple factory, default method, special method for product --- src/pizzeria/PizzaStore.java | 44 ++++++++++++++++++++-------- src/pizzeria/PizzaTestDrive.java | 10 +++++-- src/pizzeria/SimplePizzaFactory.java | 28 ++++++++++++++++++ 3 files changed, 67 insertions(+), 15 deletions(-) create mode 100644 src/pizzeria/SimplePizzaFactory.java diff --git a/src/pizzeria/PizzaStore.java b/src/pizzeria/PizzaStore.java index 4aa035e..a43b5f7 100644 --- a/src/pizzeria/PizzaStore.java +++ b/src/pizzeria/PizzaStore.java @@ -1,21 +1,16 @@ package pizzeria; public class PizzaStore { + SimplePizzaFactory factory; + + public PizzaStore(SimplePizzaFactory factory) { + this.factory = factory; + } public Pizza orderPizza(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(); - } else { - return pizza; - } + Pizza pizza; + + pizza = factory.createPizza(type); pizza.prepare(); pizza.bake(); @@ -25,4 +20,27 @@ public class PizzaStore { return pizza; } + public Pizza orderPizza() { + Pizza pizza; + + pizza = factory.createPizza(); + pizza.prepare(); + pizza.bake(); + pizza.cut(); + pizza.box(); + + return pizza; + } + + public Pizza orderPepperoniPizza() { + Pizza pizza; + + pizza = factory.createPepperoniPizza(); + pizza.prepare(); + pizza.bake(); + pizza.cut(); + pizza.box(); + + return pizza; + } } diff --git a/src/pizzeria/PizzaTestDrive.java b/src/pizzeria/PizzaTestDrive.java index 6dae385..ae283e0 100644 --- a/src/pizzeria/PizzaTestDrive.java +++ b/src/pizzeria/PizzaTestDrive.java @@ -3,7 +3,8 @@ package pizzeria; public class PizzaTestDrive { public static void main(String[] args) { - PizzaStore store = new PizzaStore(); + SimplePizzaFactory factory = new SimplePizzaFactory(); + PizzaStore store = new PizzaStore(factory); Pizza pizza = store.orderPizza("cheese"); System.out.println("We ordered a " + pizza.getName() + "\n"); @@ -11,6 +12,11 @@ public class PizzaTestDrive { pizza = store.orderPizza("veggie"); System.out.println("We ordered a " + pizza.getName() + "\n"); - System.out.println(new PizzaStore().orderPizza("pepperoni").toString()); + pizza = store.orderPepperoniPizza(); + System.out.println("We ordered a " + pizza.getName() + "\n"); + + pizza = store.orderPizza(); + System.out.println("We ordered a " + pizza.getName() + "\n"); + } } diff --git a/src/pizzeria/SimplePizzaFactory.java b/src/pizzeria/SimplePizzaFactory.java new file mode 100644 index 0000000..22bbec1 --- /dev/null +++ b/src/pizzeria/SimplePizzaFactory.java @@ -0,0 +1,28 @@ +package pizzeria; + +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; + } + + public Pizza createPizza() { + return new CheesePizza(); + } + + public Pizza createPepperoniPizza() { + return new PepperoniPizza(); + } +} + -- GitLab