Source Code: https://bitbucket.org/williamblair/headfirstdesignpatternscpp/src/main/
| Strategy | Encapsulates interchangable behaviors and uses delegation to decide which one to use |
| Observer | Allows objects to be notified when the state changes |
| Decorator | Wraps an object to provide new behavior |
| Factory Method | Subclasses decide which concrete classes to create |
| Abstract Factory | Allows a client to create families of objects without specifying their concrete classes |
| Singleton | Ensures one and only one object is created |
| Command | Encapsulates a request as an object |
| Adapter | Wraps an object and provides a different interface to it |
| Facade | Simplifies the interface of a set of classes |
| Template Method | Subclasses decide how to implement stepns in an algorithm |
| Iterator | Provides a way to traverse a collection of objects without exposing its implementation |
| Composite | Clients treat collections of objects and individual objects uniformly |
| State | Encapsulates state-based behaviors and uses delegation to switch between behaviors |
| Proxy | Wraps an object to control access to it |
| Model-View-Controller (MVC) | Compound pattern consisting of Observer, Strategy, Composite patterns. |