an established general solution to a commonly occurring software development problem
a general reusable solution to a commonly occurring problem within a given context in software design
a standard solution to a common programming problem; a technique for making code more flexible; shorthand for describing program design and how program components are connected