Alexander - "Each pattern is a three part rule, which expresses a
relation between a certain context, a problem, and a solution."
Gamma et al. - "solution to a recurring problem in a particular
context, applicable not only to architecture but to software design as
well"