In this chapter, I described what design patterns are. Christopher Alexander says “patterns are solutions to a problem in a context.” They are more than a kind of template to solve one's problems. They are a way of describing the motivations by including both what we want to have happen along with the problems that are plaguing us.
I looked at reasons for studying design patterns. Such study helps to
Reuse existing, high-quality solutions to commonly recurring problems.
Establish common terminology to improve communications within teams.
Shift the level of thinking to a higher perspective.
Decide whether I have the right design, not just one that works.
Improve individual learning and team learning.
Improve the modifiability of code.
Facilitate adoption of improved design alternatives, even when patterns are not used explicitly.
Discover alternatives to large inheritance hierarchies.