Design patterns are typical solutions to commonly occurring problems in software design. They can be broken into three categories:
- Creational Patterns for the creation of objects
- Structural Patterns to provide relationship between objects
- Behavioral Patterns to help define how objects interact

Creational Patterns
Structural Patterns
Behavioral Patterns
https://github.com/kamranahmedse/design-patterns-for-humans
Gang of Four Design Patterns
Design Patterns