A design pattern is a general reusable solution to a commonly occurring problem within a given context.