Design Patterns: Elements of Reusable Object-Oriented Software
M**L
Keep it by your side
This, of all the software engineering textbooks, is the one you should keep on your desk.It's perfectly balanced between being a reference resource you can keep on flicking back to, and a more detailed textbook that's worth reading in detail.
E**N
All as expected
All as expected
C**G
This book is 20 years old. Is it still worth reading? Yes!
Design patterns (the method) are a foundational part of modern CS and software engineering. Design Patterns (the book, aka GOF) is what kicked it all off. But the book is more than 20 years old now, and it shows. Is it still relevant? Is it still worth reading? With that question in mind I picked up the book again for the first time in many many years.In short, yes it is still worth reading. Definitely so. Designing class structures is a significant part of most major software engineering projects, and doing it well reduces friction throughout the project, now and in future iterations. Whilst modern reactive, functional techniques subsume some of GOF or make knowledge of it unnecessary for the application developer, the API's and libraries these tools are built on almost always use patterns from GOF, as do other tools and libraries. Knowing those patterns makes using the libraries easier.What's more, the book clearly makes the case and explains the value of concepts common to good software engineering, object oriented and otherwise. Decoupling, encapsulation, clearly defined responsibilities and others are all explained.Of course, patterns are no panacea. You can make a good argument that design patterns are only necessary because of weaknesses in the languages used, that the need for them disappears in modern languages (and old, good, good-old languages like Common Lisp):"The shape of a program should reflect only the problem it needs to solve. Any other regularity in the code is a sign, to me at least, that I'm using abstractions that aren't powerful enough-- often that I'm generating by hand the expansions of some macro that I need to write." (Paul Graham)The Strategy pattern is a clear example of this, wrapping up functions in an object - and only necessary in languages which do not treat functions as first class entities in their own right. And using Singleton is generally accepted as a terrible idea.(As an aside, Visitor is also sometimes presented as another unnecessary pattern whose motivation disappears if you use a good language - Scala, Groovy and C# come to mind, Wikipedia lists more. I'm less convinced by this claim, multiple dispatch is complex and easy to misunderstand. Explicit use of a visitor takes more typing but may be clearer.)The book has clearly dated in other ways. The diagrams aren't UML (the book predates it!). The book depends on customs instead of what are now language-level features like interfaces. The heavy use of inheritance and subclassing is antiquated. A (to modern ears) obscure focus on micro-optimisation, warning that some patterns require instantiation of more objects and that this could be a performance concern. There is no consideration of concurrency and dependency injection doesn't get a look in. The absence of testing, although use of the patterns often presciently enables it much more than the "un-patterned" alternatives.So there you have it: GOF is a hero, complete with tragic flaws. Well worth reading, but read it with the knowledge that a lot has changed in the last 20 years. Modern languages make some patterns redundant. There are other problems that patterns don't address. But for better or worse, I still find myself thinking in patterns most days of the week.
K**D
Poor qualitu print.
I honestly wouldnt know how good the content is but I am sure it's great. What isn't great is the qualitu of the "paperback" version. If paperback meant really cheap printed from india. Given that the book says for distribution in sub continent of india only, I am assuming it is being sold here illegally.Again the print quality is awful. The paper is so thin you can see the otherside with minimal effort. The margins are no existent. Some pages have been printed at an angle and some were stuck together.
M**S
Four Stars
The book was as expected and it’s arrived earlier
M**M
I'm not sure why I received a version of the ...
I'm not sure why I received a version of the book published in India. It has a massive warning on the front saying:"Circulation of this edition outside of Indian subcontinent is UNAUTHORIZED".Hopefully the content of the book is still the same as the English version.
J**N
Don’t buy this book!
This is not a newer edition. It’s just a really bad reprint of the original book that’s not meant to be sold outside of India. The quality of printing and pages is terrible.
S**E
A must-have book for every software engineer
If your goal is to learn how to write code that is maintainable and not just functional, this book is an ideal choice. It provides valuable insights and techniques for coding professionally, ensuring that your skills extend beyond mere functionality to creating maintainable and efficient solutions.
C**8
A Must-Have for Object Oriented Programmers
This book is widely known as one of THE foundational books for Object Oriented Programming and design. It’s an excellent read and should be read at least once by every aspiring programmer.
C**Y
I liked it. I understood about 40% of it
A book I had always wanted to read. I read it. I liked it. I understood about 40% of it.
F**O
Tutto ok niente da segnalare.
Materiale arrivato conforme e in ottimo stato
F**S
Todo correcto.
El libro era el que pedí y me llegó antes de tiempo. Tuve un problema con uno de los vendedores que me trajo un libro distinto y lo está gestionando Amazon ahora mismo, pero lo volví a comprar con otro vendedor y la verdad que perfecto.Es la última edición y su contenido es muy bueno. Muy útil para la ingeniería del Software. Bastante contento
Trustpilot
4 days ago
1 week ago