What is a software design pattern?
John Moore A design pattern is a solution to a general software problem within a particular context.
- A recurring set of situations where the pattern applies.
- A system of forces (goals and constraints) that occur repeatedly in this context.
- A description of communicating objects and classes (collaboration) that can be applied to resolve those forces.