Design patterns are important techniques in system design. While system design, a system designer faces various difficulties to implement the same designs again and again. You can say there are various problems which can be solved with a common solution. Design patterns are techniques to provide a solution to common. In Software Engineering, design patterns are used to enhance reusability resulting in preservation of previous experience gained through similar situations. The commonly occurring problems in designs are solved through a general solution which is applicable to a range of problems. These designs can not be translated directly into source code. These are not finished designs, but these are templates for how to resolve a problem in different contexts. The concept was introduced by Richard Helm, Erich Gamma, Ralph Johnson and John Vlissides in their book named “Design Patterns – Elements of Reusable Object-Oriented Software”. These four authors of the book are known as Gang of Four (GOF). According to them, patterns are based on object-oriented design. There are 23 patterns.