Design Patterns: Elements of Reusable Object-Oriented Software
Enlarge cover
Rate this book
Clear rating

Design Patterns: Elements of Reusable Object-Oriented Software

4.1 of 5 stars 4.10  ·  rating details  ·  4,186 ratings  ·  168 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 October 31st 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  C Programming Language by Brian W. KernighanThe Pragmatic Programmer by Andrew HuntDesign Patterns by Erich GammaRefactoring by Martin FowlerStructure and Interpretation of Computer Programs by Harold Abelson
Essential Programming Books
3rd out of 108 books — 234 voters
Structure and Interpretation of Computer Programs by Harold AbelsonIntroduction to Algorithms by Thomas H. CormenThe  C Programming Language by Brian W. KernighanDesign Patterns by Erich GammaThe Pragmatic Programmer by Andrew Hunt
Essential Books of Computer Science
4th out of 139 books — 84 voters


More lists with this book...

Community Reviews

(showing 1-30 of 3,000)
filter  |  sort: default (?)  |  rating details
Mark
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
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
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 4 of 5 stars
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
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
Daniel
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
Mark Miller
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
Joecolelife
May 03, 2011 Joecolelife rated it 5 of 5 stars
Recommended to Joecolelife by: www.CocoMartini.com
Design Patterns is required reading for all object-oriented designers, developers, and architects who want to improve and streamline their design skills. This book will open your eyes and teach you how to utilize widely accepted and standardized design patterns to implement efficient solutions for frequently encountered design challenges. You'll immediately recognize multiple instances within your own projects in which design patterns would have improved efficiency and reuse within the architect...more
Francesco Abeni
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
Chris
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
Steve
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.
Alex Allain
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
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...more
John Chilton
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.
Steve
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
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.
Ed
Jul 16, 2008 Ed rated it 2 of 5 stars
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.
Ahmed
Mar 18, 2014 Ahmed marked it as to-read
Ivo Stoykov
Classic in computer literature. Clear, very well structured and useful book. A must read for everyone interested in software development.
Adnan Ali
Read to understand patterns, but please think for yourself when you code.
Diego
Este libro presenta un catálogo de varios patrones de diseño orientado a objetos, los cuales son usados comúnmente en sistemas y en frameworks de desarrollo. Se considera que este libro ha sido influyente en el campo de diseño orientado a objetos desde su publicación en 1995.
Para el programador novato es un "must-read": resume soluciones a problemas comunes en el diseño de sistemas orientados a objetos, describe las condiciones bajo las cuales es útil hacer uso de estas soluciones y las consecue...more
Marshall
This is the granddaddy of software design patterns. It documents 23 designs that tend to show up everywhere in object-oriented software. This book is profound. It has radically reshaped the whole industry. Programmers have become accustomed to developing in terms of the patterns outlined in this book. New programming languages have incorporated many of the patterns into their standard libraries, and even the language constructs themselves. For these reasons, it's really impossible to give this b...more
Seth
If you do anything with software, Design Patterns (the religion of 1995-2000) have wormed into your work. I was a fan in 95 and I'm still a fan; I'm glad the patterns by the "Gang of Four" (as this book and its authors are known) have permeated the larger dev community.

So you've seen these patterns in other, better books. You've read later books with different sets of patterns. you probably own a beat-up copy of the GoF book.

Get the CD anyway, even though you won't actually read it cover-to-cove...more
Shaun
This book is considered one of the "bibles" of object-oriented programming, and with good reason. It presents a catalog of generalized solutions to general programming problems. These solutions are written in such a way as to make them modular and maintainable while encapsulating the logic into central areas to prevent simple changes from affecting your entire code base. Alternatively, many of these design patterns can be used to add functionality to existing code when you would otherwise be rec...more
David
This is considered a bible for OO design by some. This book defines many common design patterns. The book begins with a case study that attempts to illustrate how the decision to apply a particular design pattern came into play, which was a nice touch. The subsequent chapters each deal with a design pattern, grouped by its type, that describes the problem and solution followed by benefit-cost analysis and some examples.

The book is not a good read, compared to several other books on design patter...more
Andrew Janke
Like a lot of things I'm reading lately, I should have read this ten years ago. Good stuff. I think the patterns notion is a useful way to approach discussing software, and the patterns in this book seem like a good set of core patterns for OO programming. I had picked up many of them here and there through programming or other reading, as I'm sure a lot of other experienced developers have, but it was good to read them from the original source. Some of them were more detailed about how the patt...more
Dan
The "Gang of Four" design patterns tome. This is the ultimate book on software design patterns and a book every programmer should own.

It's a little dry, but covers the topics very well. It's become so popular for a reason. However, if you're new to the concept, the book "Head First: Design Patterns" may be better to start with. This book will be easy once you've read that book.
Anton Kan
It's really the Holy Bible for those who plan to deal with modern object-oriented design and programming. The book is definitely not enough to become a good architect but the one to start with. It helps to gain a new understanding of what the software design is, especially for those who come to development from academic spheres.
Dave Peticolas

The famous book by the "Gang of Four" (not the ones from the so-called Cultural Revolution in China) about sound and useful patterns in object-oriented software engineering.

Josh Davis
This was an amazing book. I absolutely loved the discussion on design patterns. I love great design in all aspects and so learning about it when it comes to software was really refreshing.

When reading this, be sure to read the first two chapters very carefully. It could be really easy to skip over these and just skim them but they set the tone for all the final chapters. Plus the terms are slightly different than one might expect.

I definitely recommend this to any programmer that wants to step u...more
« 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
  • Test Driven Development: By Example
  • Effective C++: 55 Specific Ways to Improve Your Programs and Designs
  • Refactoring to Patterns
  • Working Effectively with Legacy Code
  • Code Complete
  • Head First Design Patterns
  • Agile Software Development, Principles, Patterns, and Practices
  • Domain-Driven Design: Tackling Complexity in the Heart of Software
  • Programming Pearls
  • The Pragmatic Programmer: From Journeyman to Master
  • Art of Computer Programming, The, Volumes 1-3 Boxed Set
  • Effective Java Programming Language Guide
  • The Practice of Programming
  • Growing Object-Oriented Software, Guided by Tests
  • Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)
  • Compilers: Principles, Techniques, and Tools
  • Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions

Goodreads is hiring!

If you like books and love to build cool products, we may be looking for you.
Learn more »
Contributing to Eclipse: Principles, Patterns, and Plug-Ins Objektorientierte Software Entwicklung Am Beispiel Von Et++: Design Muster, Klassenbibliothek, Werkzeuge Entwurfsmuster Olio-ohjelmointi suunnittelumallit Introduction to Object Orient Design in C++

Share This Book