Design Patterns are used in Programming Languages a practice or description of how to solve commonly seen problems. They differ from Algorithms in that they do not have concrete steps. Design patterns are programming language agnostic and often shown as UML diagrams.

Design patterns can be categorised in to:

Creational Design Pattern

Behavioural Design Pattern

Structural Design Pattern