Design Patterns are recurring solutions to design problems.
The 23 design patterns included in Design Patterns all had several known applications and were on a middle level of generality, where they could easily cross application areas and encompass several objects. These patterns are divided into 3 types.
- Creational Patterns: create objects for you, rather than your having to instantiate objects directly. Your programs gains more flexibility in deciding which objects need to be created for a given case.
- Structural Patterns: help you to compose group of objects to larger structures, such as complex user interfaces and accounting data.
- Behavioural Patterns: help you to define the communication between objects in your system and how the flow is controlled in a complex program.