Design Patterns: Elements of Reusable Object-Oriented Software

Design Patterns: Elements of Reusable Object-Oriented Software

4.08 of 5 stars 4.08  ·  rating details  ·  2,542 ratings  ·  142 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.
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 89 books — 158 voters
Structure and Interpretation of Computer Programs by Harold AbelsonIntroduction to Algorithms by Thomas H. CormenDesign Patterns by Erich GammaArtificial Intelligence by Stuart RussellArt of Computer Programming, The, Volumes 1-3 Boxed Set by Donald E. Knuth
Essential Books of Computer Science
3rd out of 129 books — 53 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
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
Borja
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 th
...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
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
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
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
Anton
Книга посвящена описанию шаблонов проектирования. В начале книги проводится пример дизайна редактора документов с использованием различных паттернов. По мере описания примера определяются проблемы и способы их решения. Далее идет описание шаблонов проектирования разбитых на несколько классов (каталог паттернов). Целью прочтения книги была систематизация опыта.
Прочтение книги позволило рассмотреть ряд проблем проектирования и способов их решения. С многими проблемами и решениями приходилось сталк...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
Hai Nguyen
This book presents a long list of design patterns that you will most likely forget after finishing it. You can benefit from this book not by remembering these patterns, but by reading carefully the principles mentioned in the part "How Design Patterns Solve Design Problems" in the "Introduction" section, and after that applying these principles into studying the "Motivation" section of each pattern. Keeping these principles in mind while coding and you will see design patterns appear naturally i...more
Shane Vigil
An excellent foundational book for any serious programmer who is looking to design more than just a pocket-full of scripts. The book has two primary aspects; one to substantiate the concept of a design pattern, and the other to serve as a reference for fundamental patterns. The book also illustrates with examples, how those fundamental patterns could work together. I think that the prose could have been a little more down to earth, though some would say it was "dumbed down" too much. Did not rea...more
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
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
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
João
The incontrovertible reference regarding software design patterns for object-oriented analysis and design. Why not 5 stars? The pattern explanations tend to be too technical (remember this is supposed to serve as a textbook for courses)); not that the technicalities shouldn't be there, but examples should be more down-to-earth and understandable. Other than that, it's more of a personal opinion that a fact: I believe the book would be better suited if based on Java rather than C++.
Justin Demaris
This book dives into some of the timeless problems in application development and how many great minds have solved them. This isn't a cookbook or a how to. This is an explanation of the problems and solutions that other members of the development community have already solved and how you can solve these problems before you even realize they exist. This is required reading for anyone who wants to consider them self a senior software engineer.
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
Ahmed Salem
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".
Brad
Design Patterns is the catalog of design patterns. Unfortunately, it does not teach how to develop good design patterns, but the scope and detail of the patterns is useful to learn how to use and recognize them.

It is not a very good read. Originally written as a doctoral thesis, it was not intended to be a widely-read book. However, it is accurate and thorough.
Tony
This book is one of the "standards" in modern programming. It's better as a reference than as an introductory book.

Dry. And all the examples are in C++. For some people, that's a good thing. It translates reasonably well to Java, if you're already familiar with that language.

If you're looking for a less-dry, introductory volume, try "Head-First Design Patterns."
Jason
This is the bible of object oriented program design. This book defines classic object oriented design patterns. Code samples are all in C++, but are easy enough to follow even if you don't know C++. Each chapter defines a common problem, describes the solution, and illustrates the pattern. - essential reading for any OO programmer.
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.
Daniel Lyons
This book took me from knowing how to write a class to knowing how to write object-oriented software. Fantastic book, increasingly misunderstood. The point isn't to blindly copy the patterns, it's to embody the kind of thinking that produced the patterns. Treat this book as a tutorial in OO thinking rather than an index of great design ideas you should pack your software with and you'll get farther.

FP is certainly stealing the thunder from OO right now, but OO isn't going anywhere. If you progra...more
Nicholas
good and clear book, with minor disadvantage: clearly defines design patterns, how and when they should be used, and factors to consider when using them. a very useful book for any software development work. the only disadvantage with this book is that its examples of each design pattern are sometimes convoluted and confusing.
Kristjan Wager
Without a doubt one of the classic works in the field of computer science, and a must-read for people who want to work with code.

By now, it's somewhat dated, and a lot of the patterns are unnecessary to use, as they are implemented in the frameworks, yet it's still valuable to understand what's going on beneath the hood.
Ben Rand
I'm really glad I read Head First Design Patterns before I read this, or I don't think I would have understood it. It's very well written. The layout of the book and the way each pattern was explained made it very readable. The sample code is all in C++ or SmallTalk, which made the samples somewhat harder for me to follow because I have no experience in either. But, the patterns all about object-oriented techniques which translate fairly easily into whatever OO language you prefer.
Dmitri Nesteruk
Ultimately a bit out of date in terms of language used. At least for someone from the managed world. Also, modern practices such as e.g., dependency injection wipe out some of the original thinking. That said, still a classic book, though I'd opt for a C#- or Java-specific variety for the sake of clarity.
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.
Joshua
Anyone who is serious about development needs to read this book. It not only outlines many common design patterns but also how to model them and how they can interact with eachother. Read it and keep it on your desk because this is one you will want to come back to.
« 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 »
Design Patterns
Design Patterns:Elements Of Reusable Object Oriented Software With Applying Uml And Patterns:An Introduction To Object Oriented Analysis And Design And The Unified Process
Приемы объектно-ориентированного проектирования. Паттерны проектирования. (Paperback)
Design Patterns CD: Elements of Reusable Object-Oriented Software (Audio CD)
Design Patterns Elements Of Reusable Object Oriented Software

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 Design Patterns Design Patterns – Catalogue de modèles de conception réutilisables Objektorientierte Software-Entwicklung Am Beispiel Von Et++: Design-Muster, Klassenbibliothek, Werkzeuge Objektorientierte Software Entwicklung Am Beispiel Von Et++: Design Muster, Klassenbibliothek, Werkzeuge

Share This Book

Your website