Why Software Design Patterns?
Reusable architectures can be very hard to design.
Expert designers have discovered ways of creating highly reusable and flexible object systems; but, historically such discovery has required years of experience. Because of the time and effort required to gain this knowledge, expert designers often achieve a guru status and organizations can develop an extreme dependence on those individuals. This dependence can be dangerous to the long-term success of the organization. We need good training techniques to distribute this knowledge more evenly.
Organizations have tried number of training techniques with varying success: courses, seminars and mentoring, for example. However, a new technique has proven far more effective than any tried before. This technique is called patterns.
Fundamentally, patterns are a documentation technique. But, they have become an industry-wide movement that incorporating a sane philosophy. Since the publication of the book Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides -- affectionately called the Gang-of-Four (GOF) -- the software design patterns movement has moved into the object oriented software development mainstream.
A software design pattern documents a solution to a fairly generic problem -- one that the pattern author has seen in more than one design -- along with some comments and recommendations on applying it. The author writes the pattern following a loosely standardized format:
Each pattern has a name which is easy to remember and simplifies finding the right pattern to fit a particular problem. Pattern naming also simplifies discussion of design. For example, if I design a system which uses the Composite pattern to implement a hierarchical object structure, all I need to say to a programmers is: “I used the Composite pattern here” and then articulate the specifics of how I applied it. If the programmer understands this pattern, little more needs to be explained.
Design patterns make it far easier to communicate issues of good design. They are effective training tools. Reports indicate that students who are exposed to design patterns tend to learn advanced design concepts far faster and better. The key reason is that the patterns published by the GOF not only provide good solutions to common problems, but also explain why they are good, how others have applied them in the past -- with examples and code -- and discuss the forces they do and do not resolve.
The Pattern Digest provides an online catalog of software design patterns, a complete, categorized listing of all published books on patterns and many additional pattern-related resources. Stop on by!