In software engineering, a design pattern is a general repeatable solutions to a commonly occurring problem in software design. A design pattern isn't a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations.
Generally design pattern can be broken down into three types.
- Creational
- Structural
- Behavioral
- Adapter
- Decorator
- Dependency Injection
- Facade
- Factory
- Iterator
- Observer
- Proxy
- Singleton
- Strategy