Design Patterns#

Design patterns are a way to solve common problems in software design. They are not a finished design that can be transformed directly into code. They are a description or 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 to solve common problems when designing an application or system. If you recognize these problems/situations, you can apply the relevant design pattern to solve it and that will help other experienced developers understand the design of your application easier.

Origin of the term “Design patterns”.#

The term “Design patterns” was first introduced by the architect Christopher Alexander in 1977. He noticed that many things in our lives happen according to patterns. He tried to document these patterns in his book “A Pattern Language”. He describes a pattern as: “Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice”.

In 1994, the “Gang of Four” (GoF) authors Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides published a book titled “Design Patterns - Elements of Reusable Object-Oriented Software” which initiated the concept of Design Pattern in Software development.