What are design patterns?
The Design patterns are recurring solution to the recurring problems in the software architecture. There are 3 basic classification of patterns Behavioral patterns,Creational, and Structural   patterns.
Creational Patterns:
-  Abstract Factory:- This Creates an instance of the several families of classes.
-  Builder :- It Separates object construction from its representation.
-  Factory Method:- It Creates an instance of the several derived classes.
-  Prototype:- The fully initialized instance to be cloned or copied.
-  Singleton:- The class in which only a single instance can be exist.
Structural Patterns:
-  Adapter:-In this interfaces of different classes are matched.
-  Bridge:-It Separates an object's interface from its implementation.
-  Composite:-A tree structure of the simple and composite objects.
-  Decorator :-It Add authorities to the objects dynamically.
-  Façade:-The single class which represents the whole subsystem.
-  Flyweight:-It is a fine-grained instance used for effective sharing.
-  Proxy:- The object representing the other object.
Behavioral Patterns:
-  Mediator:-It Defines the simplified communication between classes.
-  Memento:-It Captures & restore an object's internal state.
-  Interpreter:-A way to include the language elements in the program.
-  Strategy:-It Encapsulates the algorithm inside a class.
-  Observer:-A way of notifying change to a no. of classes.
-  Template Method:-Defer the exact points of an algorithm to a subclass.
-  Visitor:-It Defines a new operation to a class without change.
-  Iterator:-It Sequentially access the elements of a collection.
-  Chain of Resp:-A way of passing a request b/w a chain of objects.
-  Command:-It Encapsulate a command request as an object.
-  State:-whenever its state changes alter an object's behavior.