Design Pattern

A reusable solution to a commonly occurring problem, particularly useful in software design.