Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online
Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online__right
Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online__front

Description

Product Description

Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves.


The authors begin by describing what patterns are and how they can help you design object-oriented software. They then go on to systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems. With Design Patterns as your guide, you will learn how these important patterns fit into the software development process, and how you can leverage them to solve your own design problems most efficiently.


Each pattern describes the circumstances in which it is applicable, when it can be applied in view of other design constraints, and the consequences and trade-offs of using the pattern within a larger design. All patterns are compiled from real systems and are based on real-world examples. Each pattern also includes code that demonstrates how it may be implemented in object-oriented programming languages like C++ or Smalltalk.

Amazon.com Review

Design Patterns is a modern classic in the literature of object-oriented development, offering timeless and elegant solutions to common problems in software design. It describes patterns for managing object creation, composing objects into larger structures, and coordinating control flow between objects. The book provides numerous examples where using composition rather than inheritance can improve the reusability and flexibility of code. Note, though, that it''s not a tutorial but a catalog that you can use to find an object-oriented design pattern that''s appropriate for the needs of your particular application--a selection for virtuoso programmers who appreciate (or require) consistent, well-engineered object-oriented designs.

Review

This book isn''t an introduction to object-oriented technology or design. Many books already do a good job of that...this isn''t an advanced treatise either. It''s a book of design patterns that describe simple and elegant solutions to specific problems in object-oriented software design....Once you understand the design patterns and have had an "Aha!" (and not just a "Huh?" experience with them, you won''t ever think about object-oriented design in the same way. You''ll have insights that can make your own designs more flexible, modular, reusable, and understandable--which is why you''re interested in object-oriented technology in the first place, right? -- From the Preface

This is one of the best written and wonderfully insightful books that I have read in a great long while...this book establishes the legitimacy of patterns in the best way: not by argument, but by example. -- C++ Report

From the Inside Flap

This book isn''t an introduction to object-oriented technology or design. Many books already do a good job of that. This book assumes you are reasonably proficient in at least one object-oriented programming language, and you should have some experience in object-oriented design as well. You definitely shouldn''t have to rush to the nearest dictionary the moment we mention "types" and"polymorphism," or "interface" as opposed to "implementation" inheritance.

On the other hand, this isn''t an advanced technical treatise either. It''s a book of design patterns that describes simple and elegant solutions to specific problems in object-oriented software design. Design patterns capture solutions that have developed and evolved over time. Hence they aren''t the designs people They reflect untold redesign and recoding as developers have struggled for greater reuse and flexibility in their software.Design patterns capture these solutions in a succinct and easily applied form.

The design patterns require neither unusual language features nor amazing programming tricks with which to astound your friends and managers. All can be implemented in standard object-oriented languages, though they might take a little more work than ad hoc solutions. But the extra effort invariably pays dividends in increased flexibility and reusability.

Once you understand the design patterns and have had an "Aha!" (and not just a "Huh?") experience with them, you won''t ever think about object-oriented design in the same way. You''ll have insights that can make your own designs more flexible, modular, reusable, and understandable - which is why you''re interested in object-oriented technology in the first place, right?

A word of warning and encouragement: Don''t worry if you don''t understand this book completely on the first reading. We didn''t understand it all on the first writing! Remember that this isn''t a book to read once and put on a shelf. We hope you''ll find yourself referring to it again and again for design insights and for inspiration.

This book has had a long gestation. It has seen four countries, three of its authors'' marriages, and the birth of two (unrelated) offspring.Many people have had a part in its development. Special thanks are due Bruce Andersen, Kent Beck, and Andre Weinand for their inspiration and advice. We also thank those who reviewed drafts of the manuscript: Roger Bielefeld, Grady Booch, Tom Cargill, Marshall Cline, Ralph Hyre, Brian Kernighan, Thomas Laliberty, Mark Lorenz, Arthur Riel, Doug Schmidt, Clovis Tondo, Steve Vinoski, and Rebecca Wirfs-Brock. We are also grateful to the team at Addison-Wesley for their help and patience: Kate Habib, Tiffany Moore, Lisa Raffaele, Pradeepa Siva, and John Wait. Special thanks to Carl Kessler, Danny Sabbah, and Mark Wegman at IBM Research for their unflagging support of this work.

Last but certainly not least, we thank everyone on the Internet and points beyond who commented on versions of the patterns, offered encouraging words, and told us that what we were doing was worthwhile. These people include but are not limited to Ran Alexander, Jon Avotins, Steve Berczuk, Julian Berdych, Matthias Bohlen, John Brant, Allan Clarke, Paul Chisholm, Jens Coldewey, Dave Collins, Jim Coplien, Don Dwiggins, Gabriele Elia, Doug Felt, Brian Foote, Denis Fortin, Ward Harold, Hermann Hueni, Nayeem Islam, Bikramjit Kalra, Paul Keefer, Thomas Kofler, Doug Lea, Dan LaLiberte, James Long, Ann Louise Luu, Pundi Madhavan, Brian Marick, Robert Martin, Dave McComb, Carl McConnell, Christine Mingins, Hanspeter Mossenbock, Eric Newton, Marianne Ozcan, Roxsan Payette, Larry Podmolik, George Radin, Sita Ramakrishnan, Russ Ramirez, Dirk Riehle, Bryan Rosenburg, Aamod Sane, Duri Schmidt, Robert Seidl, Xin Shu, and Bill Walker.

We don''t consider this collection of design patterns complete and static; it''s more a recording of our current thoughts on design. We welcome comments on it, whether criticisms of our examples, references and known uses we''ve missed, or design patterns we should have included. You can write us care of Addison-Wesley, or send electronic mail to design-patterns@cs.uiuc. You can also obtain softcopy for the code in the Sample Code sections by sending the message "send design pattern source" to design-patterns-source@cs.uiuc.

Mountain View, California - E.G.
Montreal, Quebec - R.H.
Urbana, Illinois - R.J.
Hawthorne, New York - J.V.

August 1994

0201633612P04062001

From the Back Cover

Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves.

The authors begin by describing what patterns are and how they can help you design object-oriented software. They then go on to systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems. With Design Patterns as your guide, you will learn how these important patterns fit into the software development process, and how you can leverage them to solve your own design problems most efficiently.

Each pattern describes the circumstances in which it is applicable, when it can be applied in view of other design constraints, and the consequences and trade-offs of using the pattern within a larger design. All patterns are compiled from real systems and are based on real-world examples. Each pattern also includes code that demonstrates how it may be implemented in object-oriented programming languages like C++ or Smalltalk.



0201633612B07092001

About the Author

Dr. Erich Gamma is technical director at the Software Technology Center of Object Technology International in Zurich, Switzerland. Dr. Richard Helm is a member of the Object Technology Practice Group in the IBM Consulting Group in Sydney, Australia. Dr. Ralph Johnson is a faculty member at the University of Illinois at Urbana-Champaign''s Computer Science Department.

John Vlissides is a member of the research staff at the IBM T. J. Watson Research Center in Hawthorne, New York. He has practiced object-oriented technology for more than a decade as a designer, implementer, researcher, lecturer, and consultant. In addition to co-authoring Design Patterns: Elements of Reusable Object-Oriented Software, he is co-editor of the book Pattern Languages of Program Design 2 (both from Addison-Wesley). He and the other co-authors of Design Patterns are recipients of the 1998 Dr. Dobb''s Journal Excellence in Programming Award.



0201633612AB09122003

Excerpt. © Reprinted by permission. All rights reserved.

PREFACE This book isn''t an introduction to object-oriented technology or design. Many books already do a good job of that. This book assumes you are reasonably proficient in at least one object-oriented programming language, and you should have some experience in object-oriented design as well. You definitely shouldn''t have to rush to the nearest dictionary the moment we mention "types" and "polymorphism," or "interface" as opposed to "implementation" inheritance. On the other hand, this isn''t an advanced technical treatise either. It''s a book of design patterns that describes simple and elegant solutions to specific problems in object-oriented software design. Design patterns capture solutions that have developed and evolved over time. Hence they aren''t the designs people They reflect untold redesign and recoding as developers have struggled for greater reuse and flexibility in their software. Design patterns capture these solutions in a succinct and easily applied form. The design patterns require neither unusual language features nor amazing programming tricks with which to astound your friends and managers. All can be implemented in standard object-oriented languages, though they might take a little more work than ad hoc solutions. But the extra effort invariably pays dividends in increased flexibility and reusability. Once you understand the design patterns and have had an "Aha!" (and not just a "Huh?") experience with them, you won''t ever think about object-oriented design in the same way. You''ll have insights that can make your own designs more flexible, modular, reusable, and understandable - which is why you''re interested in object-oriented technology in the first place, right? A word of warning and encouragement: Don''t worry if you don''t understand this book completely on the first reading. We didn''t understand it all on the first writing! Remember that this isn''t a book to read once and put on a shelf. We hope you''ll find yourself referring to it again and again for design insights and for inspiration. This book has had a long gestation. It has seen four countries, three of its authors'' marriages, and the birth of two (unrelated) offspring. Many people have had a part in its development. Special thanks are due Bruce Andersen, Kent Beck, and Andre Weinand for their inspiration and advice. We also thank those who reviewed drafts of the manuscript: Roger Bielefeld, Grady Booch, Tom Cargill, Marshall Cline, Ralph Hyre, Brian Kernighan, Thomas Laliberty, Mark Lorenz, Arthur Riel, Doug Schmidt, Clovis Tondo, Steve Vinoski, and Rebecca Wirfs-Brock. We are also grateful to the team at Addison-Wesley for their help and patience: Kate Habib, Tiffany Moore, Lisa Raffaele, Pradeepa Siva, and John Wait. Special thanks to Carl Kessler, Danny Sabbah, and Mark Wegman at IBM Research for their unflagging support of this work. Last but certainly not least, we thank everyone on the Internet and points beyond who commented on versions of the patterns, offered encouraging words, and told us that what we were doing was worthwhile. These people include but are not limited to Ran Alexander, Jon Avotins, Steve Berczuk, Julian Berdych, Matthias Bohlen, John Brant, Allan Clarke, Paul Chisholm, Jens Coldewey, Dave Collins, Jim Coplien, Don Dwiggins, Gabriele Elia, Doug Felt, Brian Foote, Denis Fortin, Ward Harold, Hermann Hueni, Nayeem Islam, Bikramjit Kalra, Paul Keefer, Thomas Kofler, Doug Lea, Dan LaLiberte, James Long, Ann Louise Luu, Pundi Madhavan, Brian Marick, Robert Martin, Dave McComb, Carl McConnell, Christine Mingins, Hanspeter Mossenbock, Eric Newton, Marianne Ozcan, Roxsan Payette, Larry Podmolik, George Radin, Sita Ramakrishnan, Russ Ramirez, Dirk Riehle, Bryan Rosenburg, Aamod Sane, Duri Schmidt, Robert Seidl, Xin Shu, and Bill Walker. We don''t consider this collection of design patterns complete and static; it''s more a recording of our current thoughts on design. We welcome comments on it, whether criticisms of our examples, references and known uses we''ve missed, or design patterns we should have included. You can write us care of Addison-Wesley, or send electronic mail to design-patterns@cs.uiuc.edu. You can also obtain softcopy for the code in the Sample Code sections by sending the message "send design pattern source" to design-patterns-source@cs.uiuc.edu.Mountain View, California - E.G.Montreal, Quebec - R.H.Urbana, Illinois - R.J.Hawthorne, New York - J.V.August 1994

Excerpt. © Reprinted by permission. All rights reserved.

This book isn''t an introduction to object-oriented technology or design. Many books already do a good job of that. This book assumes you are reasonably proficient in at least one object-oriented programming language, and you should have some experience in object-oriented design as well. You definitely shouldn''t have to rush to the nearest dictionary the moment we mention "types" and"polymorphism," or "interface" as opposed to "implementation" inheritance.

On the other hand, this isn''t an advanced technical treatise either. It''s a book of design patterns that describes simple and elegant solutions to specific problems in object-oriented software design. Design patterns capture solutions that have developed and evolved over time. Hence they aren''t the designs people They reflect untold redesign and recoding as developers have struggled for greater reuse and flexibility in their software.Design patterns capture these solutions in a succinct and easily applied form.

The design patterns require neither unusual language features nor amazing programming tricks with which to astound your friends and managers. All can be implemented in standard object-oriented languages, though they might take a little more work than ad hoc solutions. But the extra effort invariably pays dividends in increased flexibility and reusability.

Once you understand the design patterns and have had an "Aha!" (and not just a "Huh?") experience with them, you won''t ever think about object-oriented design in the same way. You''ll have insights that can make your own designs more flexible, modular, reusable, and understandable - which is why you''re interested in object-oriented technology in the first place, right?

A word of warning and encouragement: Don''t worry if you don''t understand this book completely on the first reading. We didn''t understand it all on the first writing! Remember that this isn''t a book to read once and put on a shelf. We hope you''ll find yourself referring to it again and again for design insights and for inspiration.

This book has had a long gestation. It has seen four countries, three of its authors'' marriages, and the birth of two (unrelated) offspring.Many people have had a part in its development. Special thanks are due Bruce Andersen, Kent Beck, and Andre Weinand for their inspiration and advice. We also thank those who reviewed drafts of the manuscript: Roger Bielefeld, Grady Booch, Tom Cargill, Marshall Cline, Ralph Hyre, Brian Kernighan, Thomas Laliberty, Mark Lorenz, Arthur Riel, Doug Schmidt, Clovis Tondo, Steve Vinoski, and Rebecca Wirfs-Brock. We are also grateful to the team at Addison-Wesley for their help and patience: Kate Habib, Tiffany Moore, Lisa Raffaele, Pradeepa Siva, and John Wait. Special thanks to Carl Kessler, Danny Sabbah, and Mark Wegman at IBM Research for their unflagging support of this work.

Last but certainly not least, we thank everyone on the Internet and points beyond who commented on versions of the patterns, offered encouraging words, and told us that what we were doing was worthwhile. These people include but are not limited to Ran Alexander, Jon Avotins, Steve Berczuk, Julian Berdych, Matthias Bohlen, John Brant, Allan Clarke, Paul Chisholm, Jens Coldewey, Dave Collins, Jim Coplien, Don Dwiggins, Gabriele Elia, Doug Felt, Brian Foote, Denis Fortin, Ward Harold, Hermann Hueni, Nayeem Islam, Bikramjit Kalra, Paul Keefer, Thomas Kofler, Doug Lea, Dan LaLiberte, James Long, Ann Louise Luu, Pundi Madhavan, Brian Marick, Robert Martin, Dave McComb, Carl McConnell, Christine Mingins, Hanspeter Mossenbock, Eric Newton, Marianne Ozcan, Roxsan Payette, Larry Podmolik, George Radin, Sita Ramakrishnan, Russ Ramirez, Dirk Riehle, Bryan Rosenburg, Aamod Sane, Duri Schmidt, Robert Seidl, Xin Shu, and Bill Walker.

We don''t consider this collection of design patterns complete and static; it''s more a recording of our current thoughts on design. We welcome comments on it, whether criticisms of our examples, references and known uses we''ve missed, or design patterns we should have included. You can write us care of Addison-Wesley, or send electronic mail to design-patterns@cs.uiuc.edu. You can also obtain softcopy for the code in the Sample Code sections by sending the message "send design pattern source" to design-patterns-source@cs.uiuc.edu.

Mountain View, California - E.G.
Montreal, Quebec - R.H.
Urbana, Illinois - R.J.
Hawthorne, New York - J.V.

August 1994



0201633612P04062001

Product information

Brief content visible, double tap to read full content.
Full content visible, double tap to read brief content.

Videos

Help others learn more about this product by uploading a video!
Upload video
Brief content visible, double tap to read full content.
Full content visible, double tap to read brief content.

More items to explore

Customer reviews

4.7 out of 54.7 out of 5
1,544 global ratings

Reviews with videos

Reviews with images

Top reviews from the United States

William P RossTop Contributor: Architecture
5.0 out of 5 starsVerified Purchase
Timeless Programming Classic For The Ages
Reviewed in the United States on April 7, 2016
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... See more
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.
66 people found this helpful
Helpful
Report
Alex N
4.0 out of 5 starsVerified Purchase
Still very useful
Reviewed in the United States on July 26, 2019
The book is quite old and c++ code there is dated, nobody writes like that anymore. But the concepts and approaches are timeless. So many times I saw code that should be refactored according to the patterns presented in the book. The book really is a good source of... See more
The book is quite old and c++ code there is dated, nobody writes like that anymore. But the concepts and approaches are timeless. So many times I saw code that should be refactored according to the patterns presented in the book. The book really is a good source of inspiration on how and why the code should be written differently. Modern software libraries and products are inherently complex and good architecture is a must to make them reusable and scalable. Among the cons I would highlight the dated c++ code, but overall I think c++ is not the best language to present patterns. The book is rather dry on theory, hence the reader has to be prepared to consume dry technical material. Another quite sad disadvantage is that the book doesn''t introduce a reader to GRASP patterns (General Responsibility Assignment Software Patterns), which is a list of guidances. GoF (GoF is gang of four and GoF patterns are the patterns presented in the book) patterns have much more sense if one thinks of them in terms of GRASP.

As a good companion book, I would recommend "Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development" by Craig Larman. Larman''s book gives a more gentle introduction to some of GoF patterns, explains why they are useful via GRASP guidelines and presents patterns via UML (and c# code if you like code more than diagrams) which is, in my view, much more accessible for developers who do not write code in c++. I agree that UML is outdated, but it gives a reader a good opportunity to grasp the ideas without constraints of a particular language. So two books work great together to introduce a reader to the world of good software engineering practices.

btw I recently (summer 2019) had several interviews in big tech companies in silicon valley and in 2 of them I was told that this book is a very much recommended reading for every software engineer.
18 people found this helpful
Helpful
Report
Chris Walker
5.0 out of 5 starsVerified Purchase
A Must Have For Any Software Engineer
Reviewed in the United States on February 19, 2019
I reference this book all the time. The way I organize my code improved tramendously after studying this book cover to cover! While the psuedo code seems to be more tailored to C++ and qualifiers like “friend”, the author(s) do make an effort at keeping the... See more
I reference this book all the time. The way I organize my code improved tramendously after studying this book cover to cover!

While the psuedo code seems to be more tailored to C++ and qualifiers like “friend”, the author(s) do make an effort at keeping the psuedo code generic, so the patterns may be easily applied to other OOP languages like Java, C#, Python, etc.

I highly recommend this book along with Robert C. Martin’s “Clean Code” and Koopman’s “Better Embedded System Software” for any software engineer’s library!
13 people found this helpful
Helpful
Report
S. Austin
3.0 out of 5 starsVerified Purchase
Groundbreaking, back in the day
Reviewed in the United States on August 27, 2016
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... See more
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.
74 people found this helpful
Helpful
Report
Ra
4.0 out of 5 starsVerified Purchase
Dense but to the Point
Reviewed in the United States on November 28, 2016
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... See more
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.
2 people found this helpful
Helpful
Report
LM
5.0 out of 5 starsVerified Purchase
A great classic every object oriented programmer should read
Reviewed in the United States on July 18, 2017
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... See more
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.
10 people found this helpful
Helpful
Report
Amazon Customer
4.0 out of 5 starsVerified Purchase
Incredible for both a reference book and as a guide to patterns in general - slightly outdated
Reviewed in the United States on December 21, 2020
The first 2 chapters focus on why design patterns are needed, how to use them properly, how the book will describe them, etc. This is great for people like me who prior to this weren''t too familiar with the concept. The rest of the book is a catalogue of various design... See more
The first 2 chapters focus on why design patterns are needed, how to use them properly, how the book will describe them, etc. This is great for people like me who prior to this weren''t too familiar with the concept. The rest of the book is a catalogue of various design patterns that are heavily used in industry to this day. However, the programmer''s interaction with modern languages such as python is quite different to how it was with C++ and since the use and strength of the patterns depend on the tools the language offers, there may be some books that are more specific to the likes of Python. Conceptually however, the book is still great and apart from cataloguing the essential patterns to use as a reference, also guides the reader to think correctly when designing their systems.
One person found this helpful
Helpful
Report
Siddhardha
5.0 out of 5 starsVerified Purchase
Must Read
Reviewed in the United States on January 26, 2012
As others have already noted, this is a seminal work on design patterns and is considered by many software professionals as a must read. It is probably a bit too complex for novices to design patterns in which case they are better off using another resource for starters... See more
As others have already noted, this is a seminal work on design patterns and is considered by many software professionals as a must read. It is probably a bit too complex for novices to design patterns in which case they are better off using another resource for starters (e.g.: Head First Design Patterns) and then eventually move on to this book. Head First design patterns was obviously easier to read and understand since the examples are more up to date and material is not as thorough as this book. It took me more than a month and half to read this book carefully from cover to cover. Although a lot of the patterns are discussed in depth from a theoretical level including evaluating trade-offs made with specific implementation choices, the examples in SmallTalk are out of date and not that relevant anymore but that''s understandable given the publish date of this book (1994). Like some other books (e.g.: Java Concurrency in Practice), multiple readings are necessary to fully digest the material and that needs to be coupled with either independent practice of the specific implementation choices and/or other resources that have more examples of pattern implementations so as to not only reinforce understanding but also lay a solid foundation for Object Oriented Design. Most senior folks working with Object Oriented Systems typically have this book at their desk as a reference. I found one particular pattern, namely Interpreter, pretty difficult to follow. Other than that the rest of the material is readable. Having some familiarity with UML notation will help but the appendix includes explanation of the notation used in the book, so it is not a stopper if you don''t have any exposure in that area. Towards the end of each chapter covering a given pattern, the authors include a section on related patterns which can be extremely helpful. This book also organizes different patterns into creational, structural and behavioral categories and also identifies which ones within a given category can supplement each other and which ones compete against each other. This book is not meant to be a comprehensive resource on design patterns and will have to be supplemented by other books. Highly recommended for anyone working with Object Oriented Systems.
7 people found this helpful
Helpful
Report

Top reviews from other countries

Amazon Customer
4.0 out of 5 starsVerified Purchase
Good, but not easy to read
Reviewed in the United Kingdom on October 27, 2018
I would recommend this book to everyone who wants to further their knowledge about general OOP design patterns. This book is a well-known classic, not without a reason. I believe other reviewers already described why this is a must-read for any senior OOP developer....See more
I would recommend this book to everyone who wants to further their knowledge about general OOP design patterns. This book is a well-known classic, not without a reason. I believe other reviewers already described why this is a must-read for any senior OOP developer. However, there is also a few things I didn''t like about this book. - Programming languages. I do vast majority of my coding in Java, sometimes I code in another JVM languages. This book provides examples in C++ and/or Smalltalk. Even more, this book was written before Java was a thing! This has to have an impact on how easy to follow are some of the examples. If you write Java 8 code, I bet you know what is the difference between external and internal iterator. At the same time, C++ friends will probably be less obvious to you, and the concept of e.g. enum-based singletons will not be mentioned at all. If only someone could write this book once again, but focus on Java-centric point of view. - GUI-based examples. For nearly all the patterns, there is a GUI-related example. I am deeply alergic to GUI development and would appreciate more examples relating to backend functionalities. - Didn''t we evolve since then? Many of these design patterns are explicitly targetting challenges around excessive memory utilisation and other past limitations. We can do better now. Same constraints still exist, but are applicable to a very different extent. I can see people blindly following some of these patterns today in the field, with very little reflection upon the actual problem they are trying to solve. Today good programming is frequently not about making the application consume less memory, but about making it easier to understand and change. The problems we are trying to solve have changed, therefore the solutions we apply need to change as well. Keep it in mind while reading this book - not all of that is of equal value today, as it was when this book was first published. This takes us swiftly to the next point, which is... - The pattern catalogue. While many of these design patterns are still valuable these days, there may be others which are more valuable. Just compare and contrast the builder pattern, as described in this book vs the one described many years later by Joshua Bloch. My recommendation - read this book if you haven''t done it already. Learn all the good things, just don''t forget the world has moved on since then.
20 people found this helpful
Report
Mike
5.0 out of 5 starsVerified Purchase
An absolute classic...
Reviewed in the United Kingdom on April 17, 2017
I''ve had this book for years, after a more senior dev initially lent me his copy. I''ve re-read this book so many times in my career and watched as it''s contents went from obscure, to fad and overused reference to where I think it should always have been, an accepted classic...See more
I''ve had this book for years, after a more senior dev initially lent me his copy. I''ve re-read this book so many times in my career and watched as it''s contents went from obscure, to fad and overused reference to where I think it should always have been, an accepted classic containing great wisdom. Study it, learn from from it, implement things they way it suggests - then learn that it is not dogmatic. Simply use it to help shape your software solutions into recognisable forms that can be maintained and evolved over time.
13 people found this helpful
Report
Thanh Nguyen
5.0 out of 5 starsVerified Purchase
Classic
Reviewed in the United Kingdom on April 4, 2021
The Gang of Four is already well-known in Software Industry, with many of the patterns introduced in this book are very popular in real world projects. But that''s not the main point of why you need to read this. The way the four authors distilled their experience, explained...See more
The Gang of Four is already well-known in Software Industry, with many of the patterns introduced in this book are very popular in real world projects. But that''s not the main point of why you need to read this. The way the four authors distilled their experience, explained the abstract knowledge, demonstrated the use cases and categorised the patterns are classic! Reading this book is not only lot of fun, but also really enlighted in terms of deeply understanding why you could do better in the past and how you actually do better in the future. Last but not least, this is far beyond a one-time book, it''ll be your patterns dictionary in the future.
Report
Amazon Customer
3.0 out of 5 starsVerified Purchase
Hard to gain a clear understanding
Reviewed in the United Kingdom on July 27, 2020
I can''t decide whether it''s the way this book is written or the Kindle formatting, but I find it hard to gain a clear sense of what the different patterns are doing or how to implement them. I did already have some sense from the Java Head First Design Patterns book, but...See more
I can''t decide whether it''s the way this book is written or the Kindle formatting, but I find it hard to gain a clear sense of what the different patterns are doing or how to implement them. I did already have some sense from the Java Head First Design Patterns book, but that one troublesome to due to the style it was written it and wanted something more to the point. Perhaps the one clear flaw is that this book is designed as a reference book, yet the patterns are not in the table of contents / navigation. Some of examples used are probably quite dated and obscure now too.
One person found this helpful
Report
Sohnee
5.0 out of 5 starsVerified Purchase
An Important Reference for OOD Teams
Reviewed in the United Kingdom on August 7, 2016
This book is the original and best. Yes, it is pretty dry - but you don''t read it like a novel. Simply scan through the various patterns so you know that they exist, then when the need comes up and you think "I''m sure there is a pattern that could be adapted to solve...See more
This book is the original and best. Yes, it is pretty dry - but you don''t read it like a novel. Simply scan through the various patterns so you know that they exist, then when the need comes up and you think "I''m sure there is a pattern that could be adapted to solve this problem" - you go back and read in depth to refresh your memory. Every team who use object-orientation should have a copy in the office to refer to. If you want a softer read, there is a Head First book on design patterns - but I would still recommend having a copy of this book to refer to when you want to implement and adapt a pattern in real life.
3 people found this helpful
Report
See all reviews
Brief content visible, double tap to read full content.
Full content visible, double tap to read brief content.

Customers who bought this item also bought

Brief content visible, double tap to read full content.
Full content visible, double tap to read brief content.

Customers who viewed this item also viewed

Brief content visible, double tap to read full content.
Full content visible, double tap to read brief content.

Pages with related products.

  • computer software engineering
  • elements cards
  • design engineering
  • c language
  • unit testing
  • garden design books

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online

Design Patterns: sale Elements of online sale Reusable Object-Oriented Software online