Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.

Fulfillment by Amazon (FBA) is a service we offer sellers that lets them store their products in Amazon's fulfillment centers, and we directly pack, ship, and provide customer service for these products. Something we hope you'll especially enjoy: FBA items qualify for FREE Shipping and Amazon Prime.

* 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.

Editorial Reviews

* 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.

Top customer reviews

There was a problem filtering reviews right now. Please try again later.

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.

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.

This book is like classical literature for software engineers. Everyone should be exposed to the ideas in this book at some point. The examples are in C++, but they should be applicable to most languages. High quality printing as well.

Great book. Seriously, very very good book. The reason I give it 4 instead of 5 stars is because it's written in a language that's hard to understand coming from mostly Ruby and Javascript background. Either way, this is a book I'll be coming back to for many years.

Its the original fesign pattern book. Not really designed for the beginner programmer, but for someone with 2-3 year experience. Start with a good beginner book, after getting experience purchase Clean Code, Refactor, and this book to bring yourself up to par with spme of the more senior programmers in the field.

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".

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 year (2014) marks the 20th anniversary of this book. In the tech world, it's difficult to write a book that has relevance for more than a couple years, given the fast pace at which things change. So, it's a true accomplishment that this book is still a "must-have" in any software engineer's library.

For newcomers to the field, they might be reticent to buy this book, under the misconception that patterns developed a virtual eon ago couldn't have any relevance to how software is developed today. Nothing could be further from the truth.