Why Software Design Patterns?

Back to Home Page | Visit PatternDigest.com

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:

   If you need to solve this particular problem cite the context, such as provide an example, with these kinds of difficulties state the basic obstacles that must be overcome, then try doing this: give the solution. The consequences are explain the forces at work. Some related patterns are: provide a list of similar or more basic patterns, possibly explaining how they relate.   
PatternDigest.com
Site Search


Site Map  Search Tips
powered by freefind

 PatternDigest

 Pattern Catalog:
 • by Name
 • by Category
 • by Source

 BookShelf
 • Hot!
 • Catalogs
 • General
 • Java
 • C++
 • Other Lang.
 • Process, etc.
 

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.

Visit the Object Oriented Pattern Digest!

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!



The Pattern Digest is brought to you by DavidVanCamp.com, providing software development consulting to corporate America for over 16 years. Specialties include Software Design Patterns, Large-scale Reuse and Software Process Improvement solutions for corporate enterprises.
Articles | Presentations | Object Oriented Design Workshop | Consulting
All content Copyright ©2002, David Van Camp, all rights reserved.