Listen to this post
The Design Patterns movement, begun (in software) by Gamma, Helm, Johnson, and Vlissides, essentially elevated certain design elements as valuable, repeated, high-quality examples of a particular approach to design.
Their general advice was given in three parts:
- Design to Interfaces.
- Favor composition over inheritance.
- Encapsulate the concept that varies.
All patterns adhere to this rubric in different ways. But they also all exhibit certain qualities of design and the all adhere to a set of shared principles. What I will outline in following posts are the three bits of guidance listed above, as well as how each pattern respects:
- Strong Cohesion
- Proper Coupling
- Robust Encapsulation
- Avoiding Redundancy
In addition, I will submit that each pattern follows good principles in design, such as Open-Closed, The Separation of Concerns, and others.
I’ll start with the definitions, then examine the patterns.