The purpose of design patterns is to capture software design know-how and make it reusable. Design patterns can improve the structure of software, simplify maintenance, and help avoid architectural drift. Design patterns also improve communication among software developers and empower less experienced personnel to produce high-quality designs.
This document catalogues a large number of software design patterns from a variety of sources, in particular from the literature on software architecture and various books and conferences about design patterns. The "classics" such as Layered System, Pipe, Module, Event Channel, and Repository are also included. The aim is to produce a coherent catalogue of general purpose patterns, i.e., patterns that can be used in many systems regardless of application domain. The catalogue is ordered according to the purpose of the patterns. ( Here is more on how patterns were selected.)
Note: The definitions of the patterns are not included. The purpose of this document is only to organize existing design patterns into a coherent structure. Thus, the reader should already be familiar with most patterns, for example those in the book by Gamma et al.
These pattern categories aren't finished yet:
|