descriptions of communicating objects and classes that are customized to solve a general design problem in a particular context
provide the way that a particular sub-system is structured (e.g. proxy, observer, abstract factory) - gang of four published 23
-standard solution to a common problem - technique for making code more flexible - design or implementation structure that achieves a particular purpose - connections among program components