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