On NetTuts.com there's a recent post that tries to explain the "whens" and "whys" of design patterns - when using them is a good idea and why you might want to implement them as a part of your application.
There are plenty of articles that explain what design patterns are, and how to implement them; the web doesn’t need yet another one of those articles! Instead, in this article, we will more discuss the when and why, rather than the which and how. I’ll present different situations and use-cases for patterns, and will also provide short definitions to help those of you who are not so familiar with these specific patterns.
They've broken them up by topic instead of by the patterns themselves with sections like:
- Finding the Data We Need
- Reusability
- Discover-ability
- Singularity
- Controlling Different Objects
There's also a few sections that look at other patterns that really only have a handful of uses - like the Decorator, State and Composite patterns.