Design patterns are typical solutions to commonly occurring problems in software design.
They are like pre-made blueprints that you can customize to solve a recurring design problem in your code.
The most basic and low-level patterns are often called idioms.
They usually apply only to a single programming language.
The most universal and high-level patterns are architectural patterns.
Developers can implement these patterns in virtually any language.
Unlike other patterns, they can be used to design the architecture of an entire application.
- Creational patterns provide object creation mechanisms that increase flexibility and reuse of existing code.
- Structural patterns explain how to assemble objects and classes into larger structures, while keeping these structures flexible and efficient.
- Behavioral patterns are concerned with algorithms and the assignment of responsibilities between objects.





















