In software engineering, a design pattern is a general repeatable solution 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.
These design patterns are all about Class's objects communication. Behavioral patterns are those patterns that are most specifically concerned with communication between objects.
- Caching
- Chain of Responsibility
- Circuit Breaker
- Command
- Feature Toggle
- Iterator
- Mediator
- Memento
- Observer
- Retry
- State
- Strategy
- Template Method
- Visitor
These design patterns are all about class instantiation. This pattern can be further divided into class-creation patterns and object-creational patterns. While class-creation patterns use inheritance effectively in the instantiation process, object-creation patterns use delegation effectively to get the job done.
- Abstract Factory
- Builder
- Converter
- Dependency Injection
- Factory
- Factory Method
- Object Pool
- Prototype
- Singleton
- Step Builder
These design patterns are all about Class and Object composition. Structural class-creation patterns use inheritance to compose interfaces. Structural object-patterns define ways to compose objects to obtain new functionality.
Coming next...