Softwares are susceptible to change. A new requirement can come-up any time and the software should be able to handle this change effectively with minimum intrusion. A software that is well designed can easily adapt to these ever-changing requirements and hence a good design is of utmost importance especially when it comes to design and development of a commercial software.
Design Patterns or GOF patterns are an integral part of Object Oriented Design. They are the tried and tested reusable solutions to the common problems that a programmer might encounter when designing an Object Oriented Software . They represent a wealth of collective knowledge and experience which when incorporated into a software, can make it more malleable and open to changes.
It is not that you must know all of the design patterns to become a good programmer. You can easily go about developing softwares without knowing them. But it doesn’t hurt to learn about the common design guidelines prevalent in the community when it comes to software development.
There are 23 different patterns grouped under three categories. I will be writing separate articles for each one of them.
Creational – that deals with best practices for object creation.
Singleton Pattern, Factory Method Pattern, Abstract Factory Pattern, Builder Pattern and Prototype Pattern
Structural – that deals with object composition.
Composite Pattern, Decorator Pattern, Facade Pattern, Flyweight Pattern, Proxy Pattern, Adapter Pattern and Bridge Pattern.
Behavioral – that deals with communications between objects.
Command Pattern, Chain of Responsibility Pattern, Interpreter Pattern, Iterator Pattern, Mediator Pattern, Memento Pattern, Observer Pattern, State Pattern, Strategy Pattern, Template method Pattern and Visitor Pattern.