Chapter One - Design Patterns
Prolog - the book
Did you ever wonder what makes a good solution?
Did you ever thought why solutions sometime fall apart?
Somebody asked me once why do I think that my solution to a problem is good.
To tell you the truth, Only time will tell if the solution was good or not.
The only thing that I can be sure about is that I try to simplify my solutions and I'm using a lot of design patterns on the way.
I was first introduced to design patterns in a J2EE elective course when I was a computer science student.
The lecturer introduced us to the "bible" of design patterns - Design Patterns: Elements of Reusable Object-Oriented Software.
I remember hearing other students saying things like "I'm not going to bother myself in reading that book. this is only an elective course.".
Puzzled about design patterns, I went and bought the book and it changed my point of view about programing forever.
I often find myself, even in these days, reading chapters from that book and the book is placed in my home library.
So, what are design patterns?
From Wikipedia - "a design pattern is a general reusable solution to a commonly occurring problem in software design.
A design pattern is not a finished design that can be transformed directly into code.
It is a description or template for how to solve a problem that can be used in many different situations."
The patterns are divided to three groups by their purpose - structural patterns, creational patterns and behavioral patterns.
The structural patterns deal with composition of classes and objects to form larger structures.
The creational patterns deal with the process of object creation.
The behavioral patterns deal with classes or object interaction and algorithms.
In the next post series I'm going to drill down into some common design patterns that I'm using often including implementation in C# and use cases.
The book details on amazon:
Design Patterns: Elements of Reusable Object-Oriented Software
(Addison-Wesley Professional Computing Series)
ISBN: 0201633612
ISBN-13: 9780201633610