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.