Feb 12, 2005 12:29 PM
2725 Views
(Updated Feb 14, 2005 10:09 AM)
INTRODUCTION
Since the evolution of the Object Oriented Programming it has been a challenge to software architects and designers to design systems that are truly object oriented. The basic need for Object Oriented Analysis and Design was to overcome problems created by monolithic, big executables/applications using procedural approach. The motivation was to develop component based systems that cater to the following needs:
(1) Reusability: Develop modular components so that they are easy to plug-in/plug-out in a new project and setup.
(2) Flexibility: By using modular OO Approach it was much structured and easier to enhance, add, remove features in an existing application. i.e. maintenance and enhancement issues should be solved.
(3) Extensibility: As described in 2, easier to enhance, couple, decouple new features with relative ease without affecting the existing functionality a whole lot.
Of course, every solution adds new problems and the (im)-famous Newton's laws for S/W development can be checked in 1st Comments for laughter and also introspection. The OO Approach is of course more complex to implement. It added layer(s) of complexity to develop applications, also implementation became more complex. (What is easier than replacing just one executable as in the old school way?). But these are not what we mean by the new problems, these are overheads that you got to afford in order to get above mentioned features.
For example: The vtable in C++ which supports run time polymorphism or late-binding is a smart solution but when you have multi-level hierarchies like say MFC, the vtable becomes quite big and teh actual used functionality is just a subset of what all the vtable contains...! i.e. vtable though a smart and breakthrough solution created new issues as projects went along and built complex systems.
In nut-shell: It is the experience of all the developers this book promises to deliver and make you smart to learn from others' mistake so that you can go ahead & make fresh set of mistakes! :)) This book gives you proven solutions/patterns with their drawbacks/consequences. Period.
The BOOK:
Studies show that these approaches have helped immensely and have served the purpose. Several technologies were spawned like COM/COM+ from Microsoft, CORBA by OMG and such. The path to achieve the state of happiness was bitter though. OO Designers had to learn everything teh hard way. Every solution they devised added more problems referred to as 'Consequences' in this book.
The book is written by Eric Gamma a renowned OO Designer and an expert in this field. Foreword is provided by Grady Booch, the original sinner! :) and regarded as 'Guru' by several Gurus! This book is a must buy for every Software Developer (even Mainframe professionals) for the sheer Psychological needs of a analyst.
The book explains a lot of Design Patterns in Go-Getter way. It keeps it simple, (1) it states the Problem that needs to be solved; (2) It describes the Solution that can be used to solve it (3) gives it an appropriate Name that can be used across developer community and (4) it describes the Consequences of the stated design.
Apart from such patterns the book also you some practical advice, dos and donts. Author also explains different ways to use this book as per your need and makes sure you get most out of it. It seems Eric is very conscious of his reputation and also the money people are spending on the book!
_________________CONTENTS_________________
The book clubs patterns together in 3 categories:
(1) Creational Patterns: Abstract Factory, Builder, Factory Method, Prototype, Singleton
(2) Structural Patterns: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy
(3) Behavioral Patterns: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor
The presentation, the coverage and much needed debate on the consequences of each patterns are covered in just-right details. Job Well Done!
_________________SAMPLES_________________
The books also deals with SmalTalk and C++ code for samples to explain a said Patterns. It does provide a useful CD for the same too. The best way to learn a methodology is to try it out.
_________________PRICE_________________
In India it is available as Low Price Edition and costs around 350+ Rs after discounts etc. I say it is money well spent and then more! Such books are too valuable to go into their prices. They are a must read for every Software Developer or wannabe for that matter. The international edition I am sure would set you back close to 30 bucks.