Implementing an ordering application
Let's see how we can use the builder design pattern to make a pizza-ordering application. The pizza example is particularly interesting because a pizza is prepared in steps that should follow a specific order. To add the sauce, you first need to prepare the dough. To add the topping, you first need to add the sauce. And you can't start baking the pizza unless both the sauce and the topping are placed on the dough. Moreover, each pizza usually requires a different baking time, depending on the thickness of its dough and the topping used.
We start by importing the required modules and declaring a few Enum
parameters (j.mp/pytenum) plus a constant that is used many times in the application. The STEP_DELAY
constant is used to add a time delay between the different steps of preparing a pizza (prepare the dough, add the sauce, and so on), as follows:
from enum import Enum import time PizzaProgress = Enum('PizzaProgress', &apos...