Design Patterns in the VCL -- Conclusions
Benefits of Design Patterns
Adopting the use of Design Patterns brings several advantages to a development effort:
- Larger-Granularity of Reuse
-
- Patterns encourage reuse of much larger pieces of
a design -- typically they identify a common abstraction
which applies to a handful of classes.
- Because they are explicitly made to be tailored (e.g., Alexander's quote, "repeated a million times without ever doing it the same way twice"), patterns are less likely to be rejected as reuse candidates than code, which often "won't quite fit."
- Patterns encourage reuse of much larger pieces of
a design -- typically they identify a common abstraction
which applies to a handful of classes.
- Improved Communication among Developers
-
- Patterns create "chunks" of design knowledge, which
developers can refer to by name, and reason about as
entities.
- When used to label design decisions, pattern names have far higher semantic density than verbose, hastily- typed annotations.
- Patterns create "chunks" of design knowledge, which
developers can refer to by name, and reason about as
entities.
- Leverage on Collective Wisdom of Wider Community
-
- Pattern readers gain from the experience distilled by
pattern authors
- Tradeoffs and alternatives which the pattern reader might
never discover alone are already documented.
- Pattern readers learn to look for and fin common abstractions across disparate domains, and therefore become better designers and coders themselves.
- Pattern readers gain from the experience distilled by
pattern authors
Other Pattern Types
The patterns community (see the links page) has identified a number of other kinds of patterns and pattern forms besides the ones covered here:
- Code Patterns
- Some have worked to identify patterns related to such forms
as coding idioms (e.g., reference-counting),
code formatting , and naming standards ,
with the goal of increasing the "habitability" of code for
those who maintain it.
- Analysis Patterns
- Some recent work (see Martin Fowler's book in the
links page) has focused on identifying
recurring contexts/problems across problem domains, rather than
implementation domains. For instance, Fowler describes a
pattern called Accountability which he has discovered
in such apparently unrelated domains as health-care and financial
derivatives trading.
- Organizational Patterns
- Jim Coplien and others are working to write patterns which describe
the structures common to successful development organizations. They
report significant success in applying these patterns to transform
dysfunctional organizations into healthier ones.
- Business Patterns
- Unlike Analysis Patterns, business patterns document common
problem-context-solution entities in a given industry or vertical
market. For instance, there is a great deal of current discussion
about more flexible and accurate alternatives to the double-entry
bookkeeping methods: one such being the REA patterns.