This is meant to be used as a quick tutorial on design patterns. A pattern addresses a recurring design problem that arises in specific design situations, and presents a solition to it. Patterns document exsiting, well-proven design experience. Patterns identify and specify abstractions that are above the level of single classes and instances, or of components.
Patterns provide a common vocabulary and understanding for design principles.
Patterns are a means of documenting software architechtures. Patterns support the construction of software with define properties. Patterns help you bukld comples anc heterogeneous software architectures. Patterns help you to manage software complexity. Not all authors use all these headings.