Skip to content

Commit be0e312

Browse files
committed
Pizza and PissaStore base classes
1 parent 48cb363 commit be0e312

File tree

1 file changed

+79
-1
lines changed

1 file changed

+79
-1
lines changed

chapter04_factory/pizza_abstract_factory.py

Lines changed: 79 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,4 +155,82 @@ def create_pepperoni():
155155
def create_clam():
156156
return FreshClams()
157157

158-
158+
159+
class Pizza:
160+
def __init__(self):
161+
self.name = None
162+
self.dough = None
163+
self.sauce = None
164+
self.cheese = None
165+
self.veggies = []
166+
self.pepperoni = None
167+
self.clams = None
168+
169+
def prepare():
170+
raise NotImplementedError
171+
172+
def bake():
173+
print("Bake for 25 minutes at 350")
174+
175+
def cut():
176+
print("Cutting the pizza into diagonal slices")
177+
178+
def box():
179+
print("Place pizza in official PizzaStore box")
180+
181+
def set_name(self, name):
182+
self.name = name
183+
184+
def get_name(self):
185+
return self.name
186+
187+
def __str__(self):
188+
result = []
189+
result.append("---- " + name + " ----\n")
190+
if self.dough:
191+
result.append(self.dough)
192+
result.append("\n")
193+
194+
if self.sauce:
195+
result.append(self.sauce)
196+
result.append("\n")
197+
198+
if self.cheese:
199+
result.append(self.cheese)
200+
result.append("\n")
201+
202+
if self.veggies:
203+
result.append(", ".join(self.veggies))
204+
result.append("\n")
205+
206+
if self.clam:
207+
result.append(self.clam)
208+
result.append("\n")
209+
210+
if self.pepperoni:
211+
result.append(self.pepperoni)
212+
result.append("\n")
213+
214+
return "".join(result)
215+
216+
217+
class PizzaStore:
218+
def create_pizza(self, item):
219+
raise NotImplementedError
220+
221+
def order_pizza(self, type):
222+
pizza = self.create_pizza(type)
223+
print(f"--- Making a {pizza.get_name()} ---")
224+
pizza.prepare()
225+
pizza.bake()
226+
pizza.cut()
227+
pizza.box()
228+
return pizza
229+
230+
231+
class ChicagoPizzaStore(PizzaStore):
232+
def create_pizza(self, item):
233+
pizza = None
234+
ingredient_factory = ChicagoPizzaIngredientFactory()
235+
if item == 'cheese':
236+
pizza = new Chee

0 commit comments

Comments
 (0)