- A design pattern is a general repeatable solution to a commonly occurring problem in software design.
- It is a description or template for how to solve a problem that can be used in many different situations.
- Creational design patterns - These patterns are all about Class instantiation. eg: Factory, Build, Singleton, Protoype, etc.
- Structural design patterns - These patterns are all about Class and Object composition. eg: Adapter, Bridge, Composite, Facade, Proxy, etc.
- Behavioural design patterns - These design patterns are all about Class's objects communication. eg: Strategy, Observer Patterns, etc.