What are design patterns?
Every experienced developer has a set of informal strategies that shape how he/she designs and writes applications. These strategies are shaped by their past experiences and the obstacles that they have had to overcome in previous projects. While these developers might swear by their strategies, it does not mean that their strategies have been fully vetted and proven. The use of these strategies also introduces inconsistent implementations between different developers.
A design pattern identifies a common software development problem and provides a strategy for dealing with it. The strategies behind these design patterns have been proven, over the years, to effectively solve the problem they are intended to solve.
While there is a lot to like about design patterns, and they are extremely beneficial to developers and architects, they are not the solution for world hunger that some developers make them out to be. Sometimes, in your development career, you will probably...