What

Often in Software Engineering (and any design-field), variants of problems keep recurring. Thus design patterns are good solutions to a common problem.

Examples include: