Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
So what, exactly, is a design pattern? Basically, it’s a solution to a common problem. Sometimes patterns are expressed as class diagrams, but they’re more often a diagram that describes a “who does what” scenario at a fairly high level. The idea of a design pattern was first developed by the architect Christopher Alexander, whose books The Timeless Way of Building and A Pattern Language proposed patterns for common architectural problems. It was applied to software engineering by Gamma, Helm, Johnson and Vlissides (familiarly known as the Gang of Four) in their influential Design Patterns: Elements of Reusable Object-Oriented Software.
In the last chapter we looked at a few of the principles that theoreticians have proposed for designing better, more robust software. Principles, of course, apply generally to any programming situation. Patterns, on the other hand, are general solutions to specific problems. In this chapter we’ll tackle a few of the patterns that are important in .NET development and also look at some software architectures that aren’t technically patterns, but behave a bit like them.