-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
-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
descriptions of communicating objects and classes that are customized to solve a general design problem in a particular context