Monday, March 16, 2009

Design Patterns

Definition

In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design. A design pattern is not a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations. Object-oriented design patterns typically show relationships and interactions between classes or objects, without specifying the final application classes or objects that are involved. Algorithms are not thought of as design patterns, since they solve computational problems rather than design problems.

  • A design pattern is to design is what a class library is to coding
  • Documentation of expert software engineers' "behavior"
  • Documentation of specific reoccurring problems (and solutions)
  • Abstraction of common design occurrences
  • Large range of granularity -- from very general design principles to language-specific idioms
  • A fully realized form, original, or model accepted or proposed for imitation[dictionary]
  • Describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice [Alexander]
  • the abstraction from a concrete form which keeps recurring in specific non-arbitrary contexts [Riehle]
  • both a thing and the instructions for making the thing [Coplien]
  • A literary format for capturing the wisdom and experience of expert designers, and communicating it to novices

No comments: