Software design patterns

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?

What types of software design patterns are there?

Creational patterns

Structural patterns

Behavioral patterns