Structure of the rest of the chapter
Before diving into the discussion on design patterns and their implementation, let's first lay out a strategy for the rest of the discussion. As mentioned before, we will review the strategy pattern, the simple and abstract factory patterns, and the adapter pattern. The discussion on design patterns will be roughly structured as follows:
- Start with a formal definition of the pattern
- Present an imaginary scenario where a new feature is requested
- Talk about the problem encountered in introducing this new feature
- Make an attempt to solve this problem, quickly realizing that we need to rethink the design
- The solution(s) to the problem using the design pattern
For a few design patterns, we will discuss two approaches to solving the problem. A traditional approach that resembles the one followed in languages like C++, and the other, the Pythonic approach.
Tip
Skip the traditional solution if you are interested only in the Pythonic approach.
The following is a...