What are software design patterns?
Software design patterns are general solutions to a common problems. Since they are solving a common problems that means they are reusable.
Software design has commonly occurring problems. Software design patterns do not provide a complete solutions (that can be copy pasted to a code) but rather a template or even a “way of thinking” in solving a specific problem.
Design patterns represent a somewhat formalized way of best practices that can be used to solve a specific problem. However, misuse of some patterns can lead to the issues. If this misuse is commonly known than we are talking about anti-pattern.
What is SOLID?
- Single responsibility principle
- Open–closed principle
- Liskov substitution principle
- Interface segregation principle
- Dependency inversion principle
What types of software design patterns are there?
- Abstract Factory
- Prototype – A prototype design pattern is used when we want to create one object which can be used as a template (prototype) for creation of some other objects.
- Singleton – A singleton pattern is used when we want to ensure that only one object of the class will be created.
- Object pool pattern
- Chain of Responsibility