reuses abstract knowledge about a problem and its solution, makes use of object oriented characteristics such as inheritance and polymorphism
a written document that describes a general solution to a design problem that recurs repeatedly in many projects
serve as a tool to communicate ideas, solutions, and knowledge about commonly recurring design problems.