Years ago, the concept of design patterns made a fundamental change to the way software engineers approached design problems. The idea, for those who are unfamiliar, is that in software development we often find ourselves confronted with the same problems over and over, but in a…