In Software Design- Design Patterns are reusable solutions to commonly occurring problems. The word “pattern” means if similar kind of problem occurs across multiple applications/in different situations, then this problem can be solved in a standard way. Each Design Pattern concentrates on a particular aspect of the problem.
Each Pattern consists of the following-
- The pattern name
- The Problem & Conditions to which it may be applied
- The Solution
- The Consequences
According to the uses and purposes Design Patterns are categorized into 3 areas.
- Creational Design Pattern- Handles the class object creation process or class instantiation
- Behavioral Design Pattern- Focuses on the object behavior and responsibility
- Structural Design Pattern- Focuses on the structure of different objects
| Creational Patterns | Behavioral Patterns | Structural Patterns |
| Singleton | Chain of Responsibility | Adapter(Object/Class) |
| Simple Factory | Command | Bridge |
| Factory Method | Interpreter | Composite |
| Abstract Factory | Iterator | Decorator |
| Builder | Mediator | Facade |
| Prototype | Momento | Flyweight |
| Observer | Proxy | |
| State | ||
| Strategy | ||
| Visitor | ||
| Template |