In our day to day lives as software engineers we encounter recurring conceptual problems, there may be many ways to solve that problem, but How do I go about finding the best way to tackle it?
The answer is Design Patterns.
Design patterns are solutions to recurring problems, these are widely accepted solutions by software community. It is a toolkit of tried and trusted solutions for problem statements.
Basically to keep it bluntly one of the primary principle of software development is DRY -Do not Repeat Yourself, reasons being it might take a long time for you to implement it and it will be expensive. So pattern looks at the structure of the problem statement and apply a well proven solution to it.
The idea of design patterns was picked up Erich Gamma, John Vlissides, Ralph Johnson, and Richard Helm often referred to as Gang of Four (GoF). In 1995 they published a book named “Design Patterns: Elements of Reusable Object-Oriented Software”, which was a best seller. But before the GoF there was Christopher Alexander wrote a book on timeless entities called Patterns in 1977 which has 253 patterns. Later GoF looked at the same conceptual problems with the same solutions, they came up with set of design patterns and reduces it to 23.
So design Pattern is a leitmotif(or a structure) to solved a problem statement. It is not a framework or algorithm, Also it is language independent. There are mainly there categories in Design Patterns:
We will discuss on each of them deeply on these in the next blog.