Design Patterns

Creational

 * Abstract factory
 * Builder
 * Factory method
 * Lazy initialization
 * Object pool
 * Prototype - clone
 * Object pool

Structural

 * Adapter
 * Bridge - pimpl interface
 * Composite - tree
 * Decorator - dynamic using pointer, static using inheritance of template parameter
 * Delegation - use pointer to parent / other object to delegate operations
 * Facade - hides system complexity providing a simple API
 * Flyweight - share common data of several objects
 * Proxy - representation of a server side object

Behavioral

 * Chain of responsibility - eg. multiple loggers/sinks
 * Command - encapsulate all information needed to perform an action or trigger an event at a later time
 * Interpreter - eg. symbolic expressions
 * Iterator
 * Mediator - eg. intermediates interactions
 * Memento - eg. serialized object
 * Observer
 * Specification - encapsulates operations that can be chained
 * State - encapsulate varying behavior for the same object
 * Strategy - select an algorithm at runtime
 * Template method - an operation is described as an ordered set of customizable steps
 * Visitor