I like this piece from RalphJohnson and SteveMellor:
One example of a question with conflicting answers is "How should
generic information be treated?"
Much of the information in our software is generic to the problem
domain, while other information is specific to the particular problem
we are solving. How do we separate the two and encode the generic
information in such a way that it can be reused?
- Object-oriented developers tend to encode both generic and specific
information in objects and classes, though not in the same ones.
Sometimes they use abstract classes to encode generic information,
and put specific information in the concrete classes. Other times
the classes represent generic information, and the specific information
is in the scripts that instantiate classes, parameterize the instances,
and connect them together.
- Domain-specific software architects encode the generic
information in a domain specific software architecture supported
by special purpose languages, encode the problem-specific
information using those languages, then translate
from the special purpose languages to the final code.
- People working with patterns view this as an unimportant
question, because what is important is to discover the generic
patterns and document them. The software developer can then decide
whether to encode the patterns in objects, to use a domain specific
language, or to just use the patterns to write a single,
specific, program. The biggest gain comes from understanding
and making explicit the patterns.
Again, each of these points is oversimplified. Nevertheless they
represent the common point of view in each camp.
BruceAnderson 26xi96