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.

Why learn design patterns?

Criticism of design patterns

Classification of patterns

Creational Patterns

Creational patterns are design patterns that deal with object creation mechanisms, trying to create objects in a manner suitable to the situation. The basic form of object creation could result in design problems or added complexity to the design. Creational design patterns solve this problem by somehow controlling this object creation.

Structural Patterns

These patterns explain how to assemble objects and classes into large structures while keeping these structures flexible and efficient.

Behavioral Patterns

These patterns are concerned with algorithms and the assignment of responsibilities between objects.