What this book covers
Part 1: Creational patterns presents design patterns that deal with object creation.
Chapter 1, The Factory Pattern, will teach you how to use the Factory design pattern (Factory Method and Abstract Factory) to initialize objects, and cover the benefits of using the Factory design pattern instead of direct object instantiation.
Chapter 2, The Builder Pattern, will teach you how to simplify the creation of objects that are typically composed by more than one related objects.
Chapter 3, The Prototype Pattern, will teach you how to create a new object that is a full copy (hence, the name clone) of an existing object.
Part 2: Structural patterns presents design patterns that deal with relationships between the entities (classes, objects, and so on) of a system.
Chapter 4, The Adapter Pattern, will teach you how to make your existing code compatible with a foreign interface (for example, an external library) with minimal changes.
Chapter 5, The Decorator Pattern, will teach you how to enhance the functionality of an object without using inheritance.
Chapter 6, The Facade Pattern, will teach you how to create a single entry point to hide the complexity of a system.
Chapter 7, The Flyweight Pattern, will teach you how to reuse objects from an object pool to improve the memory usage and possibly the performance of your applications.
Chapter 8, The Model-View-Controller Pattern, will teach you how to improve the maintainability of your applications by avoiding mixing the business logic with the user interface.
Chapter 9, The Proxy Pattern, will teach you how to improve the security of your application by adding an extra layer of protection.
Part 3: Behavioral patterns presents design patterns that deal with the communication of the system's entities.
Chapter 10, The Chain of Responsibility Pattern, will teach you how to send a request to multiple receivers.
Chapter 11, The Command Pattern, will teach you how to make your application capable of reverting already applied operations.
Chapter 12, The Interpreter Pattern, will teach you how to create a simple language on top of Python, which can be used by domain experts without forcing them to learn how to program in Python.
Chapter 13, The Observer Pattern, will teach you how to send notifications to the registered stakeholders of an object whenever its state changes.
Chapter 14, The State Pattern, will teach you how to create a state machine to model a problem and the benefits of this technique.
Chapter 15, The Strategy Pattern, will teach you how to pick (during runtime) an algorithm between many available algorithms, based on some input criteria (for example, the element size).
Chapter 16, The Template Pattern, will teach you how to make a clear separation between the common and different parts of an algorithm to avoid unnecessary code duplication.