Design Patterns are typical solutions to commonly occurring problems in software design. They are like pre-made blueprints that you can customize to solve a recurring design problem in your code.
3 main groups of patterns:
- Creational patterns provide object creation mechanisms that increase flexibility and reuse of existing code
- Structural patterns explain how to assemble objects and classes into larger structures, while keeping these structures flexible and efficient
- Behavioral patterns take care of effective communication and the assignment of responsibilities between objects
- Factory Method
- Abstract Factory
- Builder
- Prototype
- Singleton
- Adapter
- Bridge
- Composite
- Decorator
- Facade
- Flyweight
- Proxy
- Chain of Responsibility
- Command
- Iterator
- Mediator
- Memento
- Observer
- State
- Strategy
- Template Method
- Visitor