- Design patterns are typically split into 3 categories
- this is called Gamma Categorization after Erich Gamma, one of GoF authors
- deal with creation (construction) of objects
- explicit (calling an constructor) vs implicit (Dependency Injection, reflection, etc.)
- wholesale (single statement) vs piecewise (step by step)
- concerned with the structure (eg class members)
- many patterns are wrappers that mimic the underlying class interface
- stress the importance of good API design
- they are all different, no central theme
- using completely different object oriented mechanisms, so will have some overlap
- generally most of the behavioral design patterns are unique in their approach
- it solves a problem in a particular way