Definitions
A pattern describes an optimal solution to a common problem within a specific context.
From the IAWiki:
- Patterns are optimal solutions to common problems. As common problems are tossed around a community and are resolved, common solutions often spontaneously emerge. Eventually, the best of these rise above the din and self-identify and become refined until they reach the status of a Design Pattern.
Each pattern has four primary components:
- a title
- a problem
- a context
- a solution
Source: "Design Pattern Library". Yahoo Developer Network
A design pattern in architecture and computer science is a formal way of documenting a solution to a design problem in a particular field of expertise. The idea was introduced by the architect Christopher Alexander in the field of architecture, and has been adapted for various other disciplines, including computer science.
An organized collection of design patterns that relate to a particular field is called a pattern language.
Source: "Design Pattern" Wikipedia.
Discussion
In essence, patterns are structural and behavioral features that improve the "habitability" of something -- a user interface, a Web site, an object-oriented program, or even a building. They make things more usable, easier to understand, or more beautiful; they make tools more ready-to-hand.
As such, patterns can be a description of best practices within a given design domain. They capture common solutions to design tensions (usually called "forces" in pattern literature) and thus, by definition, are not novel. They aren't off-the-shelf components; each implementation of a pattern is a little different from every other. They aren't simple rules or heuristics either. And they won't walk you through an entire set of design decisions...
Source: "About Patterns." Jennifer Tidwell. Designing Interfaces.
See Also
- Design Pattern Repositories
- Anti-Patterns
- "Implementing a Pattern Library in the Real World: A Yahoo! Case Study." Erin Malone, Matt Leacock and Chanel Wheeler. Boxes and Arows.
- "Design Pattern (Computer Science)". Wikipedia http://en.wikipedia.org/wiki/Design_pattern_(computer_science)