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.

Classification of Patterns

3 main groups of patterns:

  • 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 take care of effective communication and the assignment of responsibilities between objects