Design Patterns: Elements of Reusable Object Oriented Software
Article contributed by Mr. Manoj Singh Bisht, Assistant Professor, Faculty of Technology and Computer Applications
The Industry demand for highly flexible system that can respond to quick and never ending changes of rapidly changing technology world is a major challenge for today’s software design and development.
To answer the magic word “Change is constant” in software design the “Gang of Four” came up with a fantastic solution “Design Patterns: Elements of Reusable Object-Oriented Software” published in 1994. They provided a collection of best practices for frequent real world problems, that software designers, developers, architects faces while developing software. Referencing these patterns an Architect can draw a road map of a software considering issues that may become visible later in the implementation phase. Design patterns can help in seamless design and implementation of software without facing commonly occurring problem in software design.
A highly flexible system that can achieve the business goals and can rapidly restructure itself with the new business goals can be designed referencing patterns such as Creational, Structural, Behavioral patterns. These patterns or best practices has changed the software designed techniques and has made obsolete the well known principle of inheritance and recommended the object composition mechanism, pushed developers to interface programming.
Referencing the right pattern from multiple patterns such as Factory, Abstract Factory ,Builder ,Prototype ,Singleton ,Adaptor, Bridge ,Decorator, Façade, Visitor etc as per the need of software the ” Gang of Four” made easy the life of software designers, Business leads, developers, Architects and provided a common language platform to all for easy communication and common understandability.
Some critics are there, that say’s that design patterns provide solution for limited or certain problems they can’t address all range of problems. But design patterns are general solutions, they are tested on multiple projects, with error and trial and now they are at matured stage helping and providing a new height to robust and flexible software development.