In software engineering, design patterns offer a generic solution for the specific problems that occur regularly. Design Patterns are not complete solutions, and they only guide you to the proven solutions.
Some developers don’t like design pattern, because of complexity. Nevertheless, they provide reliable paradigms, plus, they can prevent major problems and increase code readability.
At first glance, I want to split them into three and explain a little bit what they are.
1- Creational Patterns
2- Structural Patterns
3- Behavioral Patterns
1- Creational Patterns
This type of design patterns is all about instantiation of classes and the creation of objects. They have two further topics. Class Creational and Object Creational Patterns.
Class-Creational Patterns are only deal with class initiation, on the other hand, Object-Creational Patterns are deal with object creation.
These are the most used creational design patterns by developers: Factory, Abstract, Builder, Singleton, etc.
You may want to see, how creational patterns are implemented:
2- Structural Patterns
This type of design patterns organize relationships among the entities.
Best known design patterns are Adapter, Aggregate, Bridge, Proxy, etc.
3-Behavioral Patterns
This type of design patterns focuses only on communication. They increase flexibility in carrying out communication.
Chain of Responsibility, Command Pattern, Interpreter Pattern are an example of this type of design pattern.
In fact, Design Patterns are conceptual entities, so, If we want to use them correctly, we need to understand the underlined idea, what are and aren’t they.
In this short introduction, I tried to summarize the idea. If you have any ideas, comment, etc. you are more than welcome.