Design Patterns and over 670,000 other books are available for Amazon Kindle – Amazon’s new wireless reading device. Learn more

 

or
Sign in to turn on 1-Click ordering.
Express Checkout with PayPhrase
What's this? | Create PayPhrase
More Buying Choices
Have one to sell? Sell yours here
or
Get a $21.00 Amazon.com Gift Card
Design Patterns: Elements of Reusable Object-Oriented Software
 
 
Start reading Design Patterns on your Kindle in under a minute.

Don’t have a Kindle? Get your Kindle here, or download a FREE Kindle Reading App.

Design Patterns: Elements of Reusable Object-Oriented Software [Hardcover]

Erich Gamma (Author), Richard Helm (Author), Ralph Johnson (Author), John M. Vlissides (Author)
4.5 out of 5 stars  See all reviews (274 customer reviews)

List Price: $59.99
Price: $46.79 & this item ships for FREE with Super Saver Shipping. Details
You Save: $13.20 (22%)
o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o
In Stock.
Ships from and sold by Amazon.com. Gift-wrap available.
Want it delivered Friday, September 10? Choose One-Day Shipping at checkout. Details
34 new from $36.74 69 used from $24.94
Textbook StudentJoin Amazon Student and get FREE Two-Day Shipping for one year with Amazon Prime shipping benefits.

Formats

Amazon Price New from Used from
Kindle Edition $38.39  
Hardcover $46.79  
Paperback --  
Multimedia CD $38.99  
Sell This Book Back for $21.00
Whether you buy it used on Amazon for $24.94 or somewhere else, you can sell it back to our Textbook Buyback Store at the current price of $21.00 through December 31, 2010. Restrictions Apply
Used Price$24.94
Buyback Price$21.00
Price after
Buyback
$3.94

Frequently Bought Together

Design Patterns: Elements of Reusable Object-Oriented Software + Refactoring: Improving the Design of Existing Code + Code Complete: A Practical Handbook of Software Construction
Price For All Three: $123.30

Show availability and shipping details

Buy the selected items together
  • In Stock.
    Ships from and sold by Amazon.com.
    This item ships for FREE with Super Saver Shipping. Details

  • Refactoring: Improving the Design of Existing Code$45.02

    In Stock.
    Ships from and sold by Amazon.com.
    This item ships for FREE with Super Saver Shipping. Details

  • Code Complete: A Practical Handbook of Software Construction$31.49

    In Stock.
    Ships from and sold by Amazon.com.
    This item ships for FREE with Super Saver Shipping. Details


Customers Who Bought This Item Also Bought


Editorial Reviews

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

Product Details


More About the Authors

Discover books, learn about writers, read author blogs, and more.

Inside This Book (learn more)


What Do Customers Ultimately Buy After Viewing This Item?

Design Patterns: Elements of Reusable Object-Oriented Software
83% buy the item featured on this page:
Design Patterns: Elements of Reusable Object-Oriented Software 4.5 out of 5 stars (274)
$46.79
Head First Design Patterns
9% buy
Head First Design Patterns 4.6 out of 5 stars (299)
$29.67
Code Complete: A Practical Handbook of Software Construction
4% buy
Code Complete: A Practical Handbook of Software Construction 4.7 out of 5 stars (121)
$31.49
Refactoring: Improving the Design of Existing Code
2% buy
Refactoring: Improving the Design of Existing Code 4.5 out of 5 stars (140)
$45.02

Tags Customers Associate with This Product

 (What's this?)
Click on a tag to find related items, discussions, and people.
 
(16)

Your tags: Add your first tag
 

 

Customer Reviews

274 Reviews
5 star:
 (192)
4 star:
 (50)
3 star:
 (18)
2 star:
 (8)
1 star:
 (6)
 
 
 
 
 
Average Customer Review
4.5 out of 5 stars (274 customer reviews)
 
 
 
 
Share your thoughts with other customers:
Most Helpful Customer Reviews

 
310 of 325 people found the following review helpful:
5.0 out of 5 stars The best way to really learn object-oriented design, March 6, 1997
By A Customer
This review is from: Design Patterns: Elements of Reusable Object-Oriented Software (Hardcover)
This book really changed my way of thinking about object-oriented design. The idea is that when designing a new class hierarchy, though implementation details may differ, you often find yourself using the same kinds of solutions over and over again. Rather than approaching each design task out of context as an individual, isolated problem, the strategy is to study the task and identify the underlying design pattern most likely to be applicable, and follow the class structure outlined by that pattern. It's a "cookbook" school of design that works amazingly well.

There are other advantages to this book. It isolates 23 of the most common patterns and presents them in detail. You wouldn't think that 23 patterns would be enough, but once you become adept at recognizing patterns, you'll find that a large fraction of the patterns you use in practice are among these 23. For each pattern, the book carefully presents the intent of the pattern, a motivating example, consequences of using that pattern, implementation considerations and pitfalls, sample code (C++ or Smalltalk), known uses of that pattern in real-world applications, and a list of related patterns.

Upon first reading, you will start to recognize these patterns in the frameworks you see. Upon second reading, you'll begin to see how these patterns can help you in your own designs, and may also start to see new patterns not listed in the book. Once you become familiar with the pattern concept, you will be able to originate your own patterns, which will serve you well in the future. One of the most valuable contributions of this book is that it is designed not merely to help you identify patterns, but to give you a sense of which patterns are appropriate in which contexts.

I think this book is particularly valuable to many C++ and Java programmers, because of the dynamic and flexible design philosophy it follows. (Its two fundamental principles of reusable OO design are: "Program to an interface, not an implementation" and "Favor object composition over class inheritance".) I've found that many C++ books unfortunately tend to emphasize a rather static and inflexible design philosophy. Many C++ programmers do not realize how the language and the books they've studied from have been limiting their thinking until they have been exposed to ideas from other lanugages. The authors of this book have obviously been influenced by other languages as well, especially Smalltalk, and have brought many of its best lessons to C++ design. Most Java books seem to take after the C++ books, even though Java is a more dynamic language. This book may help Java programmers take full advantage of the extra power offered by their language, if they look deeply enough into some of the lesser-known features its runtime system affords.

Last, but not least, this book is valuable because it names the patterns it uses, and so gives programmers a common vocabulary to describe design concepts, rather than particular implementations. You'll find yourself saying things like, "That would be a good use for a Decorator", or "Should we use a Facade or a Mediator in this case?" I encourage readers of this book to use this vocabulary with other programmers.

In summary, this is one of the few books that I think belongs on every programmer's "must-have" list. Not to overuse a cliche, but like object-oriented design itself, the pattern concept is one of those rare paradigm-shifts in computer programming. It is equally valuable to expert professional and novice student alike. The book has a home page at http://st-www.cs.uiuc.edu/users/patterns/DPBook/DPBook.html

Help other customers find the most helpful reviews  
Was this review helpful to you? Yes No


 
167 of 176 people found the following review helpful:
4.0 out of 5 stars Must read, but requires some sophistication, May 15, 2000
By Russell Belfer (San Mateo, CA United States) - See all my reviews
(REAL NAME)   
This review is from: Design Patterns: Elements of Reusable Object-Oriented Software (Hardcover)
As you probably already realize from the large number of reviews, this book is one of the seminal books on patterns in software development. If you are a professional software developer, you must read this. If you are learning to write good software, this is a book that you will need to take on at some point, but I urge some caution.

In particular, many of the patterns in this book represent highly distilled wisdom about effective solutions -- distilled so far that, unless you have implemented code that realizes the pattern in question already, you may have trouble absorbing the material. I find that programmers-to-be who dive into this book, often end up talking annoyingly about "applying patterns" without having a real grasp of how these things translate (with some distortion and compromise) into real projects.

That being said, an excellent way to bridge the gap is to read this book along with "Pattern Hatching : Design Patterns Applied" by John Vlissides. That book is a chatty companion piece for this one -- I found myself understanding how to incorporate patterns into my day-to-day design work much more after reading both books.

See: Pattern Hatching : Design Patterns Applied [also at Amazon.com]

Overall, while this book is an extremely important contribution to software developers, it is structured in a way that makes the material difficult to absorb if you aren't approaching it with substantial previous knowledge about developing software. You can start with some of the simpler patterns (Singleton, for example) and work through the harder ones, but only by implementing projects and stumbling upon these yourself will you really feel a flash of recognition as you read them in the book.

Help other customers find the most helpful reviews  
Was this review helpful to you? Yes No


 
168 of 183 people found the following review helpful:
4.0 out of 5 stars Now that the hype is over..., January 19, 2005
By Dave O'Hearn (Boston, MA United States) - See all my reviews
This review is from: Design Patterns: Elements of Reusable Object-Oriented Software (Hardcover)
... well, it's over. "Patterns" have not revolutionized the world. Nor does this book need to be "studied" for deep insights.

What it seems patterns are actually good for is giving common names to popular solutions to problems, to make them easier to call to mind, and easier to discuss with others. Even this much is overrated. Before the advent of patterns, you could have said "callbacks" and people would have understood. Now you say "the Observer pattern".

_Design Patterns_ is none the less valuable, because it is one of those few books that EVERYONE is expected to have read. This is helpful in practice, as you can expect everyone to be familiar with its vocabulary. Few books truly fall into this "required reading" category. The only other that comes to mind is the MIT algorithms text. Many tech pundits claim that every next book is "required reading", and the claim becomes tiring after a while, but this is one of the few that really is.

I would not necessarily purchase it, though. The "pattern" schematic is verbose, and requires pages upon pages to describe something that, once you have seen it in practice once or twice, you will recognize immediately. Omitting the appendixes, the book is barely 350 pages, and presents only 23 patterns. Only a handful of the patterns are truly famous: Singleton, Observer, Template Method ... perhaps a few more. A number of them are poorly presented. Chain of Responsibility, for instance, is just one of many ways to define an event framework and does not belong in a book that doesn't present the alternatives. Mediator is another; there must be dozens of ways to create a Mediator, which most people would call an "event registry" or something else, rather than a Mediator. "Mediator" itself is little more than a name, and won't help you in design.

Some patterns are boring, since modern languages tend to provide them, and we've heard about them many times already: Iterator, Proxy, Memento (serialization). Others, like Command, are geared towards GUIs, and provide little value to other types of applications. Then there are the State and Strategy patterns, which are two sides of the same coin, and needn't be given two different names.

And so on. Definitely do not "study" this book if it seems you "just don't get it". Chances are the book is wrong. It is worth a read through, and a second read through if the terminology doesn't stick the first time, but stop at that. My gut feeling is that this book is most appropriate for someone working on his or her first large project. After that, once the terminology sinks in, the book has little else to offer. And if taken dogmatically, or considered "inspired" or infallible, the book is a hindrance. Finally, overuse of patterns can result in a "kitchen sink" design, instead of a simple one that takes a few patterns, that may or may not be ones from this book, and implements them cleanly. Take the book for what it's worth, but remain skeptical.
Help other customers find the most helpful reviews  
Was this review helpful to you? Yes No

Share your thoughts with other customers: Create your own review
 
 
 
Most Recent Customer Reviews

5.0 out of 5 stars Exactly what I needed
Fantastic book, although written a while ago, it's extremely beneficial to be aware of the patterns raised in the book. Really well explained and gives great examples.
Published 9 days ago by JohnMi

5.0 out of 5 stars Rely
This purchase was OK. Thanks. The only inconvenient is that the first producto was lost, but amazon responded for it, that do rely to amazon. Read more
Published 12 days ago by Jorge

2.0 out of 5 stars poor explanation though important topics
thought it addresses an important topic, but neither the explanation nor the examples make it a good book. I just cannot find another book.
Published 1 month ago by Ming Chen

4.0 out of 5 stars An excellent reference work.
This is not a book that you read then put on the bookshelf. This is a book that you skim over to familiarize yourself with the subject matter, then put on the bookshelf. Read more
Published 3 months ago by Ernest

4.0 out of 5 stars Excellent referrence and a must read
A must read for anyone in software development. This is a classic work which carries just as much weight in today's development world.
Published 3 months ago by J. Hostmeyer

5.0 out of 5 stars Making Order out of Best Practice
This is one of the small selection of books that belongs within arm's reach of any OO developer's desk. Read more
Published 4 months ago by Elliott Bignell

4.0 out of 5 stars I gave up writing software after reading this book
This book shows how to write reusable software in object oriented paradigm. Reusable software has been the holy grail in software architecture. Read more
Published 5 months ago by davez

5.0 out of 5 stars Every other book is a second-hand account of this one
The other books on patterns I've read (Head First, Design Patterns Explained, Applying UML and Patterns) and articles around the net are just quoting this book and trying to... Read more
Published 5 months ago by Juan Herrera

2.0 out of 5 stars If you want to waste your time ... This is the right place.
This isn't a self contained book ... to really understand it, you will find yourself searching at wikipedia and/or in several other books/sites ... Read more
Published 6 months ago by Celo C.

5.0 out of 5 stars Foundational
I should have read this years ago. I've just begun the book and it's proving an excellent review of OOP as well as a clear instruction on the use of Design Patterns. Read more
Published 6 months ago by Joseph A. Falo

Only search this product's reviews



Customer Discussions

This product's forum
Discussion Replies Latest Post
Welcome to the Design Patterns forum 0 November 2005
See all discussions...  
Start a new discussion
Topic:
First post:
Prompts for sign-in
 


Active discussions in related forums
Search Customer Discussions
   





Look for Similar Items by Category


Look for Similar Items by Subject

 

Feedback

If you need help or have a question for Customer Service, contact us.
 Would you like to update product info or give feedback on images?
Is there any other feedback you would like to provide?

Your comments can help make our site better for everyone.


Your Recent History

 (What's this?)

After viewing product detail pages or search results, look here to find an easy way to navigate back to pages you are interested in.