Sunday, August 8, 2010

The story begins…

DESIGN PATTERNS, a term that is very common among designers and enlightening for budding designers in the software field. This topics has scores of articles in the Internet and of course there are many well known books. Then why I am I writing this again ? Well, I thought of researching design patterns to understand it to a level where it is more easier to identify where design patterns can be applied.

This series that I am starting today is not about how design patterns started(past), but to explore its present nature.

What is it ?

A design pattern is guideline to solving a design problem. The complete definition can be found in wikipedia of course, so let me try to approach this with a little more layman-ish definition. So what’s a design problem ? There is a problem to be solved and the solution  required is at the design stage. Why? Problems that are correctly designed are more robust and are ‘elegantly’ solved i.e. the final implementation is more easier to accomplish. A pattern is like a blueprint to this design problem. This can be very much related to architectural designs ( In fact the term “design pattern” originated from an architect). This blueprint/guideline/template can then be used to solve a problem. 

Why is it needed ?

Over the years of solving problems, experience has taught the better way to solve a problem. Note that I using better  instead of best because getting the best possible solution has always been challenged by the future. Today’s best solution to a problem might be still be solved in a better way tomorrow. Coming back to answer the why question, software design is plagued by commonly occurring problems. If they are so common then somebody else must have solved it right ? Of course they have. Then we can just just “re-use” the solution to these commonly occurring problems. Voila! That’s the exact reason for why design patterns are needed.

Conclusion

Now that we know what are software design patterns and why they are needed we can now explore each design pattern in detail.

Every week I will explore one design pattern giving more insights about where a design pattern can be used/ how it can be used / how it solves the problem, etc.

Comments are most welcome as I am also learning in the process.

P.S: This is my first attempt to write something serious, forgive my English or stating the obvious. My intention for starting this blog series is to give my first hand understanding of Design Patterns to a beginner in the Computer Science field.

No comments:

Post a Comment