"A design pattern systematically names, motivates, and explains a general design that addresses a recurring design problem in object-oriented systems."
&mdash Gang of Four; DesignPatterns
"Each pattern is a three-part rule, which expresses a relation between a certain context, a problem, and a solution"
&mdash Christopher Alexander
- micro-architectures that can be used together to solve large problems
- prevent reinventing the wheel
- exist on different levels of abstraction
- reusable artifacts
- communicate designs and best practices
Pattern Languages are Patterns Too
- Problem
- Context
- Solution