Goodreads helps you keep track of books you want to read.
Start by marking “Design Patterns: Elements of Reusable Object-Oriented Software” as Want to Read:
Design Patterns: Elements of Reusable Object-Oriented Software
Enlarge cover
Rate this book
Clear rating
Open Preview

Design Patterns: Elements of Reusable Object-Oriented Software

4.15  ·  Rating details ·  7,486 Ratings  ·  258 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 themse ...more
Hardcover, 416 pages
Published November 10th 1994 by Addison-Wesley Professional (first published 1994)
More Details... edit details

Friend Reviews

To see what your friends thought of this book, please sign up.

Reader Q&A

To ask other readers questions about Design Patterns, please sign up.

Be the first to ask a question about Design Patterns

Community Reviews

(showing 1-30)
filter  |  sort: default (?)  |  Rating Details
Mark
Jun 20, 2007 rated it it was amazing
I don't like it as much as I used to, as I've found that using dynamic languages (ruby, perl, etc) made many of the design patterns unnecessary. Still, when I first read this book it changed the way I thought about software design and I remember my friend and I frantically re-writing huge chunks of our codebase to throw in several design patterns. I recall being amazed at seeing good, reusable solutions to problems we kept encountering.

Anyways, if you're not using Java/C++/other "static" languag
...more
Michael
Jan 28, 2008 rated it did not like it
Shelves: code, nonfiction
I know this is an unpopular opinion, but I think the concept of a design pattern is just this side of bogus.

Part of the issue is that the languages the industry has chosen have weak powers of abstraction and thus these patterns seem necessary. Perhaps it's becoming a cliche (or became one 10 years ago?), but I'm sure some haven't yet been exposed to this thought: in a decent language like Lisp, most of these design patterns are trivial. The patterns are only there to make up for the problems wi
...more
Noah Coad
Nov 14, 2010 rated it liked it  ·  review of another edition
Shelves: professional
A must have primer for any developer working with object oriented code. While it was a decent read from front-to-back (though a bit long), it is even more useful as a reference. Some of the terms are outdated by today's coding conventions, but the principles still apply and it is a fair exercise in mentally converting between the lingo used in the book and what you may be familiar with in C#, Java, or another OOP. One interesting aspect is that you can immediately start to see what programming p ...more
Adnan Ali
Read to understand patterns, but please think for yourself when you code.
Matt Hooper
Jun 03, 2007 rated it really liked it
Recommends it for: Software developers
This is the classic software design patterns book.

Much of this material is assumed knowledge in many development shops so a understanding of this book is very valuable. However, there seems to be a design pattern mania and some developers take the information in this book a bit too literally and assume these patterns are inflexible. The patterns themselves are of value but the bigger take away from this book is how to solve problems with object oriented languages. This is an excellent resource f
...more
Erika RS
Dec 28, 2012 rated it it was ok
Design Patterns is a very important reference and its contents are also important, but it is a rather dull book to read. This is mainly because the bulk of the book contains a catalog of patterns. Like most catalogs, it works better when you come to it looking for something specific.

I have two main criticisms of the patterns themselves, both of which stem more from the time the book was written than from any inherent problems with the patterns. First, each pattern contains a list of benefits and
...more
Steve
Aug 12, 2008 rated it liked it
Ahhhh ... design patterns. Most software engineers have probably used several of the patterns in this book without even realizing it. Still, I found it to be a useful validation of some of my design approaches as well as a valuable resource for streamlining my design. Reading it cover to cover will put any software architect in a position to solve many design issues faster than they may have otherwise.
Ahmed Salem
Sep 16, 2014 rated it it was amazing
Beautiful Book for very complicated topic for developers and software architects. I liked the first chapter of introduction very much. and one of the best trends I have learned from this book is that, "You don't have to use all design patterns in the software you are making, just use what you think it is useful for the current situation and purpose of the current software you are working on now".
Mark Miller
Aug 17, 2013 rated it liked it
I got this book as part of a job which had me programming in C++. I found it very helpful in understanding how to effectively use C++ so that it didn't kill me. It provides a vocabulary such that you can deal with data in a metalanguage of sorts, at least among colleagues (not in the sense of metaprogramming).

As time has passed, I've looked at Design Patterns in a new way. The introduction to the book is worth a read, even if you don't quite get the significance of it. If people would only take
...more
Daniel
Jul 07, 2010 rated it it was amazing
I'd recommend this book to any Object-Oriented programmer who wants to be even remotely familiar with the approaches being used to write production systems these days... The Design Pattern based approach to software engineering has definitely caught on, and if you aren't familiar with at least the basic patterns, *you need to be* - not only to they make logical sense, but real development teams use the pattern names often, in discussions amongst multiple developers, to describe the systems/conce ...more
Mitchell
Every time I read this book it is like peeling an onion. Layers upon layers. And yet this book is still harder to use and process than I want it to be. It has been years since I read this cover-to-cover and certainly I got more out of it this time - but this book is still just at the wrong level for what I want. Then again that's what happens when you are first to a concept - the easier/better way appears later.
Selena
The examples are somewhat out of date. The code can be a bit hard to follow because of this.

Some of the design patterns aren't really design patterns.

You can learn the the basics from this, though, so it's useful. Just be sure to read this with some more knowledgeable programmers so they can explain when the book doesn't.
Francesco Abeni
Aug 07, 2013 rated it really liked it
This is definitely a book worth reading.

The most difficult thing in it is not to understand the patterns themselves, but the underlying object-oriented knowledge. In other words: you won't understand patterns if you don't understand object-oriented programming. So, in some ways, this book will teach you OOP even more than it will teach you patterns.

Another drawback is in the examples. There's been a huge evolution since the book was written, and the current web applications are quite different
...more
Alex Allain
Dec 23, 2008 rated it it was amazing
The best part of this book is the description of design principles. The list of patterns (which take up most of the book) are really just concrete examples of those principles in action. You may find yourself referring to those lists in the future, however, for inspiration. Definitely useful to have around at all times as a reference.
Tigran Ghardashyan
Apr 09, 2016 rated it it was amazing
Հզորություն էր: Հրաշալիորեն կարողացավ համակարգել իմ այսքան տարիների աշխատանքային փորձը: Բացի design pattern-ների ընտիր կատալոգ լինելուց, զարգացնում է OOP-ական աբստրակտ մտածելակերպը (օրինակ՝ հասկանում ես, թե ինչով է տարբերվում տիպը կլասից):
Ու հա, գիրքը (անգլերեն օրիգինալը) հավաքված է LaTeX-ով, ինչի շնորհիվ ընթերցանության ընթացքում էսթետիկ բավականություն ես ստանում:
Mohammad Shaker
Jul 30, 2012 rated it it was amazing
Although an old one, it's a very good book. Maybe the best on design patterns. The joy you feel when you read it and discover that you have implemented the solution by yourself before is really enriching.
Steve
Jan 04, 2013 rated it liked it
I used this fairly extensively as a reference guide, rather than reading it front to back. Coding without using the patterns outlined in this book is a mistake, your code will be easier to write, understand and run.
John Chilton
Jul 08, 2010 rated it liked it
This book is a classic, you should read through it and it should sit on your bookshelf. But you should also read something newer and more accessible on design patterns as well, I recommend Head First Design Patterns.
Mark Berthiaume
Sep 05, 2016 rated it it was amazing
It's true that your need for patterns such as these depends heavily on your development stack, but love or hate, use them or don't, I believe it's critical to be familiar with them unless you plan to develop in a silo.
Ivo Stoykov
Nov 26, 2011 rated it it was amazing
Classic in computer literature. Clear, very well structured and useful book. A must read for everyone interested in software development.
Otis Chandler
Apr 13, 2007 rated it really liked it
The classic computer science book.
Marko Boskovic
This one is a classic. It's a kind of book that you skim through to get an overview what's inside, and then repeatedly return to when you need something particular...
Ed
Jul 16, 2008 rated it it was ok
Recommends it for: n00b developers
Shelves: work
Cliche at this point. In Java some of these, like Singleton, are actually anti-patterns. Most developers with 5-10 years OO development experience should already know these anyway.
 Maksim
Feb 24, 2016 rated it it was amazing  ·  review of another edition
Отличная книга, для тех, кто хочет ознакомиться или закрепить знания по паттернам проектирования. Воды не так много, присутствуют адекватные примеры применения.
Stijn
Jan 19, 2016 rated it it was amazing
Shelves: favorites
This book is often referred as "the bible" of design patterns. I think that's kinda true, although its a few years old.
Tung CHENG
May 21, 2017 rated it it was amazing
Such a clean way to describe the essence knowledge of programming design! I purchased the book about two years ago, at that time, I was just started being interested in programming, and have no experience in developing a complex program. As I got a programming job, until now I have working on a project about seven months, in this period I began reading ,, which eventually leads me to this book, again, . One colleague once told me, you should read more about language you work with, I doubt it. I ...more
Vladimir Ryashentsev
May 07, 2017 rated it it was amazing
Книга хороша не только самими шаблонами, но и размышлениями мотивирующими использовать их. Если в шаблонах мы видим более или менее конкретные решения наших проблем, то в размышлениях вокруг шаблонов мы можем увидеть принципы проектирования.
Arthur Gavrichenko
Очень полезная книжка для понимания основных шаблонов проектирования
Elliott Bignell
Apr 10, 2015 rated it it was amazing
This is one of the small selection of books that belongs within arm's reach of any OO developer's desk. Example code is written in C++, but the patterns are applicable to any fully-featured object-oriented language, which includes C++, Java, Smalltalk and C#, just to name a few salient examples. It catalogues the 23 now-classic solutions to object-oriented software design problems whose utility and generality have proven them worthy of a pattern name.

What may be less widely appreciated in the so
...more
Joshua Napoli
Jun 26, 2017 rated it it was amazing
Granddaddy of software design patterns, this book is still required reading.
« previous 1 3 4 5 6 7 8 9 next »
There are no discussion topics on this book yet. Be the first to start one »
  • Refactoring: Improving the Design of Existing Code
  • Effective C++: 55 Specific Ways to Improve Your Programs and Designs
  • Domain-Driven Design: Tackling Complexity in the Heart of Software
  • Refactoring to Patterns (Addison Wesley Signature Series)
  • Test Driven Development: By Example
  • Code Complete
  • Head First Design Patterns: A Brain-Friendly Guide
  • Agile Software Development, Principles, Patterns, and Practices (Alan Apt Series)
  • Programming Pearls
  • The Art of Computer Programming, Volumes 1-3 Boxed Set
  • Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions
  • The Pragmatic Programmer: From Journeyman to Master
  • Programming Ruby: The Pragmatic Programmers' Guide
  • Introduction to Algorithms
  • The Practice of Programming (Addison-Wesley Professional Computing Series)
  • Working Effectively with Legacy Code
  • Compilers: Principles, Techniques, and Tools
  • Modern C++ Design: Generic Programming and Design Patterns Applied

Goodreads is hiring!

If you like books and love to build cool products, we may be looking for you.
Learn more »
48622
Erich Gamma is a Swiss computer scientist and co-author of the influential software engineering textbook, Design Patterns: Elements of Reusable Object-Oriented Software.
More about Erich Gamma...

Share This Book

“A design that doesn’t take change into account risks major redesign in the future.” 0 likes
“that shows the flow of requests between objects. interface The set of all signatures defined by an object’s operations. The interface describes the set of requests to which an object can respond. metaclass Classes are objects in” 0 likes
More quotes…