This course covers different types of Design Patterns. In that the first one is Creational Design Pattern which covers Singleton Design Pattern and Factory Method Design Pattern. The second one is Structural Design Pattern which covers Adapter Design Pattern and Proxy Design Pattern. The third one is Behavioral Design Patterns which covers Iterator Design Pattern and Observer Design Pattern. In software engineering, a 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. Pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice. In other words it is also called as a problem/ Solution pair. Some of the Design Patterns you might be aware of like inheritance, Encapsulation, Exception Handling and Iterations. Design patterns can speed up the development process by providing tested, proven development paradigms.