Design patterns are used to represent some of the best practices adapted by experienced object-oriented software developers.
A design pattern systematically names, motivates, and explains a general design that addresses a recurring design problem in object-oriented systems.
It describes the problem, the solution, when to apply the solution, and its consequences
The following design patterns are covered with complete solution and explanation
$ git clone https://github.com/hkishn/Design-Patterns
$ cd Design-Patterns