First of all, what is a pattern?
"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
According to Alexander, pattern is a solution to the problem in certain context.
Patterns usually describe software abstractions used by programmers in their
design. This approach helps programmers to solve reoccurring problems with
relative ease. Whenever software designer encounters a problem, he or she can
look-up a pattern that solves a similar problem and tailor the example solution
to his or her needs. [3]