In software architecture and development, a pattern is a description of a recurring problem that occurs in a specific context and, based on a set of guiding forces, suggests a solution. The solution is usually a simple mechanism because it is a collaboration between two or more classes, objects, services, processes, threads, components, or nodes that work together to solve the underlying architecture or development challenge.
Patterns are useful to developers and architects because they do the following:
- They document simple mechanisms that work.
- They provide a common vocabulary and taxonomy for developers and architects.
- They allow solutions to be described concisely as combinations of patterns.
- They enable reuse of architecture, design, and implementation decisions.