• A pattern solves a problem in a context. [Alexander-1979]
• “A pattern for software architecture describes a particular recurring design problem that arises in specific design contexts, and presents a well-proven generic scheme for its solution.” [Buschmann-1996]
• “A pattern is a template. It’s a template that is an example worthy of emulation, and something observed from things in actuality. It’s a template to a solution, not a solution. It’s a template that has supporting guidelines (not so much that it keeps one from seeing how it might be used in novel ways).” [Coad-1994]
• “A pattern is a template of interacting objects, one that may be used again and again by analogy.” [Coad-1995]
• “A pattern … provides a proven solution to a common problem individually documented in a consistent format and usually as part of a larger collection.” [Erl-2009]
• “A pattern is an idea that has been useful in one practical context and will probably be useful in others.” [Fowler-1997]
• “A design pattern systematically names, motivates, and explains a general design that addresses a recurring design problem… It describes the problem, the solution, when to apply the solution, and its consequences.” [Gamma-1995]
• “A pattern describes a problem to be solved, a solution, and the context in which that solution works. It names a technique and describes its costs and benefits. Developers who share a set of patterns have a common vocabulary for describing their designs, and also a way of making design trade-offs explicit. Patterns are supposed to describe recurring solutions that have stood the test of time.” [Johnson-1997]
• “A pattern is a recurring solution to a standard problem… Patterns have a context in which they apply.” [Schmidt-1996]
• A pattern is “a form or model proposed for imitation.” [Webster’s dictionary]
• “In general, a pattern is a problem-solution pair in a given context. A pattern does not only document ‘how’ a solution solves a problem but also ‘why’ it is solved, i.e. the rationale behind this particular solution.” [Zdun-2005]
Since this book is about data modeling, the patterns focus on data structure (entities and relationships). I de-emphasize attributes as they provide fine details that can vary for applications.