Design Patterns catalog and describe recurring designs in object-oriented systems that have been proven from experience to result in flexible systems. Studying design patterns will help you leverage the experience of other software professionals to produce flexible solutions from the start, as opposed to your own process of analysis and refinement.
The set of 23 design patterns covered here originate from what is considered the foundation of software design patterns: Design Patterns: Elements of Reusable Object-Oriented Software, a book released in 1995 by a group of authors known as the Gang of Four, or GOF (Gamma, Help, Johnson, and Vlissides). Specifically, the GOF define design patterns as "descriptions of communicating objects and classes that are customized to solve a general design problem in a particular context."
The design patterns are grouped according to purpose into the following categories:
- Creational - concern the process of object creation
- Structural - deal with the composition of classes or objects
- Behavioral - characterize the ways in which classes or objects interact and distribute responsibility
It's assumed that you have a working knowledge of object-oriented concepts, including inheritance and polymorphism, prior to studying these patterns. The Standard Catalog lists the 23 patterns and a high-level description of each. If you are new to design patterns, you may want to focus on the patterns that are considered the simplest and the most common:
While the coverage of these patterns is in the context of .NET solutions, you'll find the designs equally applicable in any object-oriented programming environment.