A design pattern is a description or template for how to solve a commonly occurring problem that can be used in many different situations. There are:
Creational patterns (class instantiation) that can be further divided into class-creation patterns that use inheritance, and object-creational patterns that use delegation.
Structural patterns(class and object composition), class-creation uses inheritance and object-patterns define ways to compose objects to obtain a new functionality.
Behavioral (class’s objects communication) design patterns that are most specifically concerned with communication between objects.
RESOURCES: Source making