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.14  ·  Rating Details  ·  6,400 Ratings  ·  227 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

The Pragmatic Programmer by Andrew HuntThe C Programming Language by Brian W. KernighanDesign Patterns by Erich GammaClean Code by Robert C. MartinCode Complete by Steve McConnell
Essential Programming Books
3rd out of 126 books — 333 voters
Introduction to Algorithms by Thomas H. CormenStructure and Interpretation of Computer Programs by Harold AbelsonThe C Programming Language by Brian W. KernighanThe Art of Computer Programming, Volumes 1-3 Boxed Set by Donald Ervin KnuthDesign Patterns by Erich Gamma
Essential Books of Computer Science
5th out of 152 books — 138 voters

More lists with this book...

Community Reviews

(showing 1-30 of 3,000)
filter  |  sort: default (?)  |  Rating Details
Jan 23, 2014 Mark 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
Apr 07, 2008 Michael 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
Noah Coad
Nov 14, 2010 Noah Coad 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
Matt Hooper
Jun 03, 2007 Matt Hooper 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
Adnan Ali
Read to understand patterns, but please think for yourself when you code.
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.
Erika RS
Dec 28, 2012 Erika RS 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
Jul 07, 2010 Daniel 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
Ahmed Salem
Sep 16, 2014 Ahmed Salem 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
Mar 22, 2014 Mark Miller 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
Francesco Abeni
Aug 17, 2013 Francesco Abeni 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
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...
Максим Родионов
Отличная книга, для тех, кто хочет ознакомиться или закрепить знания по паттернам проектирования. Воды не так много, присутствуют адекватные примеры применения.
Elliott Bignell
Apr 10, 2015 Elliott Bignell 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
Kyle Smith
Jan 15, 2015 Kyle Smith rated it it was amazing
Shelves: software-systems
This is the classic book in Object-Oriented software design. I read this book recently as I found myself not understanding patterns people were discussing and it was eye-opening in a lot of ways. The examples are in C++ and/or Smalltalk and I don't know Smalltalk at all, however the authors spend a lot more time explaining principles in detail so the code examples serve only to support those.

This book is *not* for people new to software development, and it will just serve to confuse newbies. Onc
Feb 17, 2014 Chris rated it really liked it
I'm making a shift towards the classics and in doing so going through many of the books recommended by individuals who have been in a field for 5-10 years. For software architecture, this is a highly recommended book and for good reason. It is a recipe books for higher-level software patterns focusing on object-oriented programming and loose coupling. For a novice, reading this book gave me better insight into my own poor design choices (too much inheritance) and gave me insight into some better ...more
Max Savchenko
Jul 13, 2015 Max Savchenko rated it really liked it  ·  review of another edition
Подавляющее большинство частных архитектурных задач объектно-ориентированного проектирования, с которыми разработчик ПО сталкивается в своей деятельности, уже когда-то кем-то было решено. Рассматривайте эту книгу, как некий каталог, в который стоит заглянуть перед началом построения вами очередного архитектурного велосипеда. Но ни в коем случае не воспринимайте содержимое этой книги в качестве некой догмы, которой необходимо неукоснительно следовать. К паттерну проектирования можно прийти в проц ...more
Aug 14, 2008 Steve 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.
Mar 19, 2016 Bradley rated it it was ok
Shelves: technical
The idea of Design Patterns comes up all the time among software designers. Unfortunately for most of us, it is just that, an idea. To get a good grasp of what this means when you are a hands-on, kinetic learner is very difficult. The author is an idea and concepts person. Their view is "Once you understand the concept, the rest will fall into place." This is true for most academics, those who do well in the technical disciplines in college. But for the practical minded, those who learn by doing ...more
Khang Nguyen
Jan 19, 2016 Khang Nguyen rated it really liked it
This is simply a must read book for everyone who is seriously seeking a place in software engineering. There has been a number of complains that the book uses C++ and SmallTalk and therefore is judged as obsolete. Hell no, it is not out-of-date, it is classic.

Even in this fast-changing world of bits and bytes, fundamental programming principles haven't changed much for decades. Mastering design patterns allows you to look at software development problems at a higher level of abstraction. I espe
Alex Allain
Dec 23, 2008 Alex Allain 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.
Carl-Erik Kopseng
Jan 09, 2014 Carl-Erik Kopseng rated it really liked it
Shelves: faglitteratur
This book serves well as a reference, but do yourself a favor by not attempting to read it cover to cover. It is not exactly bustling with life and great prose. There are far better books to teach you the concepts. Head First Design Patterns spring to mind; a truly modern classic IMHO. When I need more detail, I turn to this.

Some have raised criticism that modern, dynamic languages such as Ruby, JavaScript or even LISP (50 years in the making, still box fresh!), makes "design patterns" obsolete
John Chilton
Jul 09, 2010 John Chilton 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.
Jan 04, 2013 Steve 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.
Mohammad Shaker
Aug 25, 2012 Mohammad Shaker 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.
Jul 16, 2008 Ed 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.
Mar 18, 2014 Ahmed marked it as to-read
Ivo Stoykov
Jan 16, 2012 Ivo Stoykov 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.
Forest Tong
Jan 28, 2016 Forest Tong rated it liked it
I only skimmed this book, which perhaps contributed to (or was the result of) a lack of appreciation. This book struck me as dull and uninspiring. Although I experienced a few aha! moments as I read about design patterns that I had independently conceived or encountered without having a name for them, the design pattern descriptions were exceedingly dry. Perhaps this is the nature of such a subject. I can hardly fault them for simply enumerating the catalogue; the introduction attempts to motiva ...more
Jun 19, 2016 Stijn 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.
« previous 1 3 4 5 6 7 8 9 99 100 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
  • Test Driven Development: By Example
  • Agile Software Development, Principles, Patterns, and Practices
  • Refactoring to Patterns
  • Domain-Driven Design: Tackling Complexity in the Heart of Software
  • Code Complete
  • Head First Design Patterns
  • Working Effectively with Legacy Code
  • Programming Pearls
  • The Practice of Programming
  • The Pragmatic Programmer: From Journeyman to Master
  • The Art of Computer Programming, Volumes 1-3 Boxed Set
  • Introduction to Algorithms
  • Programming Ruby: The Pragmatic Programmers' Guide
  • Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)
  • Compilers: Principles, Techniques, and Tools
  • Xunit Test Patterns: Refactoring Test Code

Goodreads is hiring!

If you like books and love to build cool products, we may be looking for you.
Learn more »

Share This Book

“A design that doesn’t take change into account risks major redesign in the future.” 0 likes
More quotes…