- Design Patterns are solutions to recurring problems i.e. same problem that occurrs over and over again.
- These solutions are widely accepted by the software development community.
- Language Agnostic
- Dynamic
- Incomplete by design to promote customization
- Creational Patterns
- These patterns provide various object creation mechanisms, which increases the flexibility, and reuse of the existing code.
- Structural
- These patterns explain how to assemble objects and classes into larger structures while keeping these structures flexible and efficient.
- Behavioral
- These patterns are concerned with the algorithms and assignment of responsibilities between objects.