Object Scope: Deals with object relationships that can be changed at runtime. Class Scope: Deals with class relationships that can be changed at compile time.

Creational Patterns: Used to construct objects such that they can be decoupled from their implementing system.

  • Singleton
  • Prototype
  • Abstract Factory
  • Factory Method
  • Builder

Structural Patterns: Used to form large object structures between many disparate objects.

  • Adapter: change interface uniformly, even at runtime
  • Bridge: change interface, designed upfront
  • Facade: new, maybe more usable interface
  • Proxy: provide the same interface
  • Decorator: enhance existing interface
  • Composite: combine objects under an interface
  • Flyweight

Behavioral Patterns: Used to manage algorithms, relationships, and responsibilities between objects.

  • Observer
  • Chain Of Responsibility
  • Interpreter
  • State
  • Command
  • Mediator
  • Template Method
  • Memento
  • Visitor