PDF "Design Patterns Elements of Reusable ObjectOriented Software" Erich Gamma 0009332555400 Books

By Bryan Richards on Wednesday 1 May 2019

PDF "Design Patterns Elements of Reusable ObjectOriented Software" Erich Gamma 0009332555400 Books





Product details

  • Paperback
  • Publisher Pearson Education India; 1 edition (October 4, 2000)
  • Language English
  • ISBN-10 9332555400




"Design Patterns Elements of Reusable ObjectOriented Software" Erich Gamma 0009332555400 Books Reviews


  • Twenty Two years since the book's publication it remains incredibly relevant. In the beginning I was surprised the discussion in 1994 was this high level. The preface and introduction are awesome. For example, there was one discussion about dynamically typed languages versus statically typed lanugages... I was not even aware this was being discussed in 1994.

    In certain situations you see how this book changed the way the field of computer science developed. Before the writing of the book the authors originally called the Singleton pattern the Solitaire pattern. They changed it last minute (explained in the Conclusion) from Solitaire to Singleton, and that is a major part of why everybody calls it Singleton today.

    Some people may have an issue with the age of book. When you read the introduction, they mention that C++ and Smalltalk are cutting edge programming languages. I know C++ pretty well, but I have never used Smalltalk. What I learned from the book was how Smalltalk was fundamental to creating the MVC (Model-View-Controller) framework. In a lot of places the authors point out situations where C++ programmers would implement a pattern one way, and Smalltalk programmers might use the pattern another way.

    The book's examples are mostly about text writing programs, windowing, and drawing. These examples fit well for the patterns. You can also see how the current state of programming was much different. Text editors were creating huge innovations back then.

    This book requires sophistication as a programmer. It will be a challenging book for pretty much anyone to understand completely. You need to have familiarity with the word choice as well. The authors assume you are well versed in their language. The glossary was pretty good in this book, I would recommend taking a look before you start.

    The progression of the book is excellent. There is a lengthy introduction before getting to the patterns. This helps put the entire book in context and prepares you for the challenge to come. Each pattern is unique in subtle ways that the authors explain masterfully.

    One hundred years from now this book will still work. The patterns are fundamental to software design itself. I wish most authors were this bold.
  • When I first learned about this book I found it an exciting way to codify and categorize various OO techniques - I wouldn't say it introduced any new design/implementation strategies, but it gave us all a common terminology for what we'd been doing all these years. Since then, I suppose the terminology has largely entered the programming lexicon so it's useful for all OO programmers to be familiar with these concepts and terms.

    However, we are way, way overdue for a new edition, one written using C++11/14 or modern Java for the examples. The C++98-based examples really date this book - lines and lines of code to illustrate what you'd do with a bit of STL in modern C++. The patterns themselves are still relevant, but I hope no one is taking the code examples too seriously.
  • A classic that's certainly worth having, I've had it for about a year and I've certainly picked it up a few times just to reference certain things. However, it's not as relevant now as before since it's so outdated. Also, I'm not a big fan of the style of writing, sometimes it can be hard to join the dots.
  • A great classic every object oriented programmer should read.

    This book provides a good share of wisdom about modern systems. Especially because not everything is up to date with modern standards. It teaches how the best practices about twenty years ago can withstand the judgement of time. Reading it helps understanding how big system have been made and how previous engineer designed software. Therefore reading this book can help communication in teams with various generations as well as with managers that were previously developers.

    This book is not exactly for "reading" it's best use is practicing every case with a personal implementation.
  • This book is a classic. I don't know what more can be said to convince a serious computer scientist that this book should be included in ones personal library. If you are obtaining an education in computer science or software engineering you will eventually be introduced to software architecture. Think of design patterns as a sub-class of software architecture. When designing software the same "patterns" tend to occur. This book explains the well known patterns which the reader can expand upon in their own projects.

    Whether your projects are desktop, mobile, or other, design patterns are an important part of one's knowledge "toolbox".
  • Pros Get's straight to the point
    Cons Mildly Dense

    Great Reference for Design Patterns. I'm a math student so I'm used to obstinately dense texts and thus this one isn't nearly as bad as some I've seen. But I understand the reviews of others who think it's too dense. My class is working out of a different book that I didn't like, so I asked the teacher for a recommendation and he pointed me here. Definitely a lot better for someone who can read dense texts and has a very busy schedule. 8/10 Would recommend.
  • This book is a must have guide for every intermediate programmer who wants to advance in object orientated software development. It would probably as well extend a web designer's knowledge in terms of practical approach for prototyping and designing applications, although it requires general knowledge in programming languages from the reader, that is to say the least, in order to exploit its full potential. This material is not something you read once and put on a shelf, but rather use on a regular basis as a reference for building all kinds of software, while digging deeper and exploring new layers of object orientated design patterns each time you open it.