[size="5"]What is a pattern?
The book Design Patterns states that a pattern, or design pattern, makes it easier for developers to reuse successful designs and architectures. Each pattern systematically names, explains, and evaluates an important and recurring design in object-oriented systems. They help designers get the design of their systems "right" faster. As defined by Design Patterns, a pattern has four essential elements:
- Pattern Name - The name describes a design problem, its solutions, and consequences in a word or two. It allows designers to design at a higher level of abstraction. A name also allows designers to communicate with other designers in their documentation and amongst themselves.
- Problem - The problem describes when to apply the pattern. It might describe how to represent algorithms, classes, or object structures.
- Solution - The solution describes the elements that make up the design, their relationships, responsibilities, and collaborations. It's an abstract description of a design problem and how to solve it.
- Consequences - The consequences are the results, risks, and trade-offs of applying the pattern. They are necessary in understanding and evaluating the costs and benefits of applying the pattern.