Design Patterns Revisited
Design Patterns are standard solutions to common design problems in object-oriented applications. They act as guidelines that can be used to solve recurring design problems in your code. If you have been in the software industry for a while, it is possible that you have already implemented some of these patterns without realizing it.
Note that design patterns are not ready-to-use code solutions. They describe or suggest how the solution should look like.
Benefits of Design Patterns
Teach how to solve all sorts of problems using principles of Object-Oriented Design
Adhere to SOLID principles
Achieve highly cohesive modules with minimal coupling (Extensibility and reusability).
Communication tools between designers and developers
Types of Design Patterns
Creational Design Patterns
Factory/ Abstract Factory
Builder
Prototype
Singleton
Structural Design Patterns
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Behavioral Design Patterns
Interpreter
Iterator
Mediator
Memento
Observer
State
Template Method
Visitor