1. Singleton
    1. restrict instantiation to a single instance
    2. Exactly one instance within an application memory space
    3. Global state
    4. Memory Blocking
      1. Reduced performance in Multi-threaded apps
    5. Can be used to
      1. Prevent polution of global / application namespace with variable declarations
      2. Configuration settings etc.
      3. Global logging provider?
  2. Factory Pattern
  3. Builder
    1. Product Class
      1. Vehicle
        1. NumberOfWheels
        2. NumberOfDoors
        3. PassengerCapacity
        4. LoadCarryingCapacity
    2. Abstract Product Builder Class
      1. Encapsulate Product Class
      2. Define steps to construct product
    3. Concrete Builder Classes
      1. Create a Specific product
      2. Implement steps to consruct product
    4. Director
      1. Controls Building
      2. Constructor takes Product Builder as Parameter
      3. Single Method to construct product
      4. Controls order of construction
  4. Observer