A design pattern is a reusable solution to a commonly occurring problem in software design. It describes a solution that can be used in different situations without prescribing a programming-language-specific implementation. Design patterns are considered application design best practices.

Design patterns also speed up and clarify communication between software engineers, because they are well-known across the software development community.