Implementation
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 with importing the required modules and declaring a few Enum
parameters [j.mp/pytenum] plus a constant that are 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 PizzaProgress = Enum('PizzaProgress', 'queued preparation baking ready') PizzaDough...