A pattern addresses a recurring design problem that arises in specific design situations.
Major portion of this page consists of my reading notes of the book - Pattern-Oriented Software Architecture - A System of Patterns by Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal. Published by John Wiley & Sons as part of the 'Wiley series in software design patterns'.
This page may contain information from other sources as well.
" Somewhere in the deeply remote past it seriously traumatized a small random group of atoms drifting through the empty sterility of space and made them cling together in the most extraordinarily unlikely patterns. These patterns quickly learnt to copy themselves (this was part of what was so extraordinary about the patterns) and went on to cause massive trouble on every planet they drifted on to. That was how life began in the Universe.” ― Douglas Adams, The Hitchhiker's Guide to the Galaxy
Each pattern is a three-part rule, which expresses a relation between a certain context, a problem, and a solution.As an element in the world, each pattern is a relationship between a certain context, a certain system of forces which occurs repeatedly in that context, and a certain spatial configuration which allows these forces to resolve themselves.As n element of language, a pattern is an instruction, which shows how this spatial configuration can be used, over and over again, to resolve the given system of forces, wherever the context makes it relevant.The pattern is, in short, at the same time a thing, which happens in the world, and the rule which tells us how to create that thing, and when we must create it. It is both a process and a thing; both a description of a thing which is alive, and a description of a process which will generate that thing.