Design Patterns : Known but still Unknown
Each one of us must have heard about design patterns in their respective area of technologies but in reality how many of us are aware of the fact that what design patterns actually are and how they can be incorporated in real world applications to make our as in Developer’s life a lot better.
Let us uncover some areas related to Design patterns in this blog.
Where it came from?
Patterns originated as an architectural concept by Christopher Alexander (1977/79). Design patterns gained popularity in computer science after the book Design Patterns: Elements of Reusable Object-Oriented Software was published in 1994 by the so-called “Gang of Four” (Eric Gamma, Richard Helm, Ralph Johnson, and John Vlissides), which is frequently abbreviated as “GoF”. That same year, the first Pattern Languages of Programming Conference was held and the following year, the Portland Pattern Repository was set up for documentation of design patterns.
What is it Actually?
Design patterns and Object oriented programming, if implemented aptly in correlation to each other, they can make a developer’s life really easy.
A pattern in general, is a recurring solution to a problem in context
Design patterns are solutions to software design problems which you encounter again and again in real-world application development. Patterns are about reusable designs and interactions of objects.
“Each pattern describes a problem that 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.” – Christopher Alexander, A Pattern Language.
Design patterns are basically templates or you can say blueprints for the solutions of problems which we find in application development. But take care of the fact that they are not the solution itself.
Why do I need them?
- Through a common vocabulary problem solving at the design stage as well as within the source code can be addressed. Patterns promote the use of good object-oriented software design, as they are built around solid object-oriented design principles.
- Patterns are language agnostic i.e. they are transferable over other object-oriented languages. The knowledge you gain through learning patterns will serve you in any first-class object-oriented language you decide to program in.
- Patterns are an effective way to describe solutions to complex problems. With solid knowledge of design patterns, you can communicate quickly and easily with other members of a team without having to be concerned with the low-level implementation details.
How does using Patterns make my life easy?
- First and foremost they are the tried, tested & proven development paradigms which can speed up the overall development process by addressing common issues.
- Patterns help us to learn principles of object orientation.They helps to explain why we do what we do with objects.
- If you have used design patterns any time during your development, then you can recollect the same when u encounter any of the similar problems next time during development. Afterall Design patterns are all about the reuse of solutions. After decades of object-oriented programming, most of the problems you’ll encounter will have been solved countless times before, and there will be a pattern available to assist in your solution implementation. Even if you believe your problem to be unique, by breaking it down to its root elements, you should be able to generalize it enough to find an appropriate solution.
- They isolate the variability that may exist in the system requirements, making the overall system easier to understand and maintain.
- Pattern-based analyses make you a more effective and efficient analyst because they let you deal with your models more abstractly and they represent the collected experiences of many other analysts.
Things to be kept in mind before incorporating Design Patterns
Design patterns are not the solutions of your problems but they can be a way in which u can reach a step closer to solution of your problems.
Not every design pattern is applied to every problem. They are created and custom made for addressing specific issues and so they should be appropriately chosen for your development process.The better way to apply patterns, is by identifying the fundamental problem you are trying to solve and looking for a solution that fits it.
You have to fully understand your problem, generalize it, and then apply a pattern applicable to it. However, not all problems require a design pattern. It’s true that design patterns can help make complex problems simple, but they can also make simple problems complex. You don’t always have to use a/any design pattern.
I will uncover more topics related to Design Patterns in my next post