Chapter 7. Design Patterns in Python
Design patterns simplify building software by reusing successful designs and architectures. Patterns build on the collective experience of software engineers and architects. When faced with a problem that needs new code to be written, an experienced software architect tends to make use of the rich ecosystem of available design/architecture patterns.
Patterns evolve when a specific design proves successful in solving certain classes of problem repeatedly. When experts find that a specific design or architecture helps them to solve classes of related problems consistently, they tend to apply it more and more, codifying the structure of the solution into a pattern.
Python (given that it's a language which supports dynamic types and high-level object oriented structures such as classes and metaclasses, first-class functions, co-routines, callable objects, and so on) is a very rich playground for constructing reusable design and architecture...