Design patterns are typical/repeatebale solutions to commonly occuring problems in software design.
Each pattern is like a template that can be customized to solve a particular type of problem in a code.
It can be catagolized in three sections.
The design patterns thar are exampled in this repo:
This design pattern explains how to assemble objects and classes into larger structures, along with keeping these structures flexible and efficient.
Attach new behaviors to objects by placing these objects inside special wrapper objects that contain the behaviors.
Check this repo for example
Facade is a structural design pattern that provides a simplified interface to a library, a framework, or any other complex set of classes.
Check this repo for example
This type of patterns are concerned with algorithms and the assignment of responsibilities between objects.
Define a family of algorithms, put each of them into a separate class, and make their objects interchangeable.
Check this repo for example
Allow objects to communicate with each other without the need for them to be aware of each other's identities. This pattern defines a mediator object that encapsulates the coordination logic between multiple objects.
Check this repo for example
It lets you save and restore the previous state of an object without violating encapsulation (without revealing the details of its implementation). Check this repo for example