It's my personal repository to learn about software design patterns but also a place for quick memory refresh about them if needed.
Design patterns are typical solutions to commonly occurring problems in software design. The pattern is not a specific piece of code, which you can just copy and paste into your project, but a general concept for solving a particular problem. Don't mix them with algorithms which always define a clear set of actions that leads you to some goal whereas design patterns are more like high-level descriptions of a solution.
The GoF design patterns are broken into three categories:
- Behavioral
take care of communication and the assignment of responsibilities between objects - Creational
provide object creation mechanisms with flexibility and reusing of existing code - Structural
explain how to assemble objects into larger structures