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 speed up and facilitate clear communication between software engineers - because they are well-known across the software development community.