A software design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into the source or machine code. It is a description or a template for how to solve a problem that can be used in many different situations. Design patterns are formalized best practices that the programmer can use in order to solve common problems when designing an application or a system.
GoF design patterns
What are software design patterns?
Design patterns were formally introduced in the book Design Patterns: Elements of Reusable Object-Oriented Software, first published in 1994 by the four authors Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, with a foreword...