Exercises
While writing this chapter, I discovered that it can be very difficult, and extremely educational to come up with good examples where specific design patterns should be used. Instead of going over current or old projects to see where you can apply these patterns, as I've suggested in previous chapters, think about the patterns and different situations where they might come up. Try to think outside your own experiences. If your current projects are in the banking business, consider how you'd apply these design patterns in a retail or point-of-sale application. If you normally write web applications, think about using design patterns while writing a compiler.
Start with the iterator pattern. We've been looking at iterators all through this book, including the special comprehension and generator syntaxes. Consider places where you'd want to implement the iterator pattern from scratch; what objects would you want to implement __iter__
or __next__
on?
Look at the decorator pattern and...