====== Pattern ====== ===== Meaning 1 ===== ==== Alternative Terms ==== /*i.e. alternative names meaning the same thing*/ ==== Definition ==== A **pattern** is an often-used, proven solution to a recurring problem in a certain context. ==== Description ==== * A pattern is a solution to a problem, i.e. it has a structure and a purpose. It's not merely an effect or a name for something. * Patterns are often-used. This means they cannot directly be "invented" but they are discovered, the "how up". They are recurring //pattern// in solutions to a common problem. * Patterns are "proven", i.e. generally considered good solutions. ==== Examples ==== See the [[patterns:|list of documented patterns]] in this wiki. But note that these are strictly speaking [[pattern descriptions]] not the patterns themselves. ==== Alternative Definitions ==== /*i.e. slightly different definitions for basically the same thing*/ There are plenty of definitions for the notion "pattern". Here are some of the most notable ones: > Each pattern 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.((Christopher Alexander: A Pattern Language)) > Each pattern is a three-part rule, which expresses a relation between a certain context, a problem, and a solution.((Christopher Alexander: A Pattern Language)) > A design pattern systematically names, motivates, and explains a general design that addresses a recurring design problem in object-oriented systems. It describes the problem, the solution, when to apply the solution, and its consequences. It also gives implementation hints and examples. The solution is a general arrangement of objects and classes that solve the problem. The solution is customized and implemented to solve the problem in a particular context.(({{page>resources:Design Patterns#reference}})) > A pattern [...] describes a particular recurring design problem that arises in specific design contexts, and presents a well-proven generic scheme for its solution. The solution scheme is specified by describing its constituent components, their responsibilities and relationships, and the ways in which they collaborate.(({{page>resources:Pattern-Oriented Software Architecture#reference}})) Note that the difference between a pattern description and the pattern itself is often neglected. ==== See Also ==== * [[Pattern Description]] * [[Pattern Collection]] * [[Pattern Catalog]] * [[Pattern Language]] * [[Anti-Pattern]] * [[Principle]] ==== Further Reading ==== ---- ===== Other Meanings ===== /*i.e. the same term referring to something different; put short mentions here or better add more detailed descriptions as additional sections */ ---- ===== Discussion ===== Discuss this wiki article and the term on the corresponding [[talk:glossary:Pattern|talk page]].