First let me start with the good points about this book.
This book absolutely rocks in terms of ways in which you can write a beautiful piece of code. The authors have picked up the best recipes which are time tested to create a book which should help everyone from a beginner to an expert. The book has been written for C++ programmers and requires some amount of experience in object oriented programming (hence java and c# programmers are fine too).
The bad points are:
It's old. The current and only edition came out in 1997. A second edition is long overdue. A lot has changed in the software methodologies since then. JAVA already incorporates a lot of things that are mentioned in this book. An example in point is the iterator pattern. Hence, a better book for JAVA programmers would be JAVA Design Patterns Explained or Head First Design Patterns.
Still a pretty great book...
Excellent Place To Start
This is an excellent place to start when you have a problem. It won't do the work for you, but it will get you off on the right foot.
"Head First Design Patterns" is a much better introduction
Nobody is going to take away GoF's mantle, but is the 1995 book still the best available reference on, or introduction to, the subject? Tentative "yes" on the former, emphatic "no" on the latter. One will be better off by consulting "Head First Design Patterns", and not lose that much by stopping there.
Very good book
This is a very good book by the famous GOF. I feel that this volume is a must have for the experienced application programmer.
On the way to become a more matured programmer, one begins to realize the relationship between machine and man. For system programming, the code should tip towards machine, that is, the ultimate goal is to make the program be as efficient as it can be. On the application programming side, it should be the other way around, and the code should be as readable as possible even when this means that the code would not be running at the most efficient way possible. Machine time is sacrificed for human developing/maintaining time.
After understanding the relation between close to machine and close to man, one then realizes that the programming concepts including OO, Design Patterns and the like are here to serve the purpose of helping human understand the code and not to help the machine. And only when the complexity introduced by using these concepts are much less than the complexity they reduce should people decide to use them. You must know your goals and what you are doing. Applying Design Patterns for the sake of applying Design Patterns do not necessarily add any benefits, and it could potentially do more damage than good.
I realize that this book is like a grammar book in any language in the sense that you do not study grammar books to learn the language itself. Instead, the best time to study the grammar is when you already know how to speak, listen, read and write at a pretty high level. It will, at this point, when you study grammar, greatly enhance your power and control over the language.
This is a very good book to have on the bookshelf and to open and read from time to time.
Delivered on time and in best condition
The book was delivered in timely fashion. It is in a good condition. I have no complains on the transaction