A design pattern is a general reusable solution for commonly occurring problems.
Design Patterns is to make a template of how to solve a problem that can be used in many different situations.
Creational patterns abstract the instantiation process. The following five patterns are in this category.
Structural patterns focus on how classes and objects can be composed to form relatively large structures. The following seven patterns fall into this category.
Behavioral patterns is about algorithms and the assignment of responsibilities among objects. The following eleven patterns fall into this category.