What are your favorite ones?

+92  A: 

Head First Design patterns I love this book. Always by my side.

good read, code is in java, but might as well be psuedo code, never done a day of java and it was transparent to the point.
+1 The way they introduce the problem and then provide information on how you may solve it is great. It makes you think and that is a good point for a design pattern book.
Vincent Robert
I teach Design Patterns at Johns Hopkins and was going to write a book... when I found this, it matched so closely to what I wanted to say I don't need to write one any more ;)
Scott Stanchfield
You don't receive reputation for "community wiki editable".
Ahhh. I did not know that. Good to know. Thanks.
This book is awesome.
I actually don't like that book from what I've seen. I like patterns, and every use of the patterns in that book that I saw seemed horribly contrived and just added complexity.
Should not we start calling it `"the chick [pattern] book"`? :)
I really like these kinds of visual books. Remindes to that I once began research regarding visualization ;)
this is a Great Book !

Design Patterns in Ruby

Charles Roper
+67  A: 

The classic Gang of Four book:

Design Patterns: Elements of Reusable Object-Oriented Software

It's the defining patterns book -- a classic.

its a textbook, and can put a caffeined up crack monkey straight to sleep, but its the quintessential book.
ChanChan, I read that book cover to cover once...It's not that bad.
Thomas Owens
none better +1.
+5  A: 

I'm a huge fan of "Holub on Patterns: Learning Design Patterns By Looking At Code." It's a fantastic distillation of the Gang of Four book that is easily applicable to daily development tasks.

Unlike some other books on the topic, this book goes over real-world examples and walks you through a series of design decisions that seem sound enough to address the problem, but have absolutely disastrous implications that you might not consider.

The book is primarily Java-oriented, but the concepts still apply regardless of language.

Gabriel Isenberg
+1 for that salty man's book ref!
+31  A: 

Patterns of Enterprise Architecture - Martin Fowler

+4  A: 

The obligatory Gang of Four: * Design Patterns: Elements of Reusable Object-Oriented Software* (ISBN 0-201-63361-2) by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides.

Rosellyne Thompson

The Gang of Four book is always a great reference.

[duplicate answer](
+7  A: 

I really liked Refactoring to Patterns for its "before and after" approach to using patterns to solve problems.


Undoutedly 'Head First Design Patterns'. Hey, it got a Jolt award too.

I really liked 'Design Patterns in Ruby' too.

+5  A: 

I like the pattern-oriented software architecture (POSA) series.

Lars A. Brekken
+6  A: 

Head First Design Patterns. If you want an illustrative book around patterns, you can't go wrong!

why not vote up, if you have nothing to actually contribute to this answer?
[duplicate answer](

A thought for the day: a design pattern is a solution for a problem your environment is forcing upon you

Internet Friend
+5  A: 

I'll vote up the Head First Design Patterns book, but I just wanted to add...

This is a wonderful, funny and educative book that made me think about Object Oriented programming in a whole new way.

You can tell it's going to be a good book early one, where a picture of a tiger is accompanied with the caption

This is a tiger, your brain thinks this is important

Between the people that wrote that and Charles Petzold you could interest anyone in programming...

+4  A: 

Enterprise Integration Patterns is invaluable for being able to intelligently discuss asynchronous messaging architectures.

Not written by Martin Fowler, but part of his "Signature Series".

Kevin Pauli
+1  A: 

Refactoring to Patterns is a good book once you have become familiar with patterns.

+1  A: 

Head First Design patterns! I love it explain the concept of the pattern in a visual and funny way that help me understand it a lot better.


This one is more oriented to PHP but it's very good and talks something about design patterns: PHP 5 Objects, Patterns, and Practice by Matt Zandstra

+1  A: 

I'm currently reading APPLYING UML AND PATTERNS. Quite a good book for starting to learn about Unified Process and to get an introduction about design patterns.

+2  A: 

Head First Design Patterns definately. Really is a well-written way to get one's head into the concepts.

+12  A: 

I would recommend Refactoring: Improving The Design Of Existing Code by Martin Fowler, a really pleasant and useful book which has a soothing, reassuring quality. It makes code fold and unfold in front of you as it was the simplest thing in the world, and lets you see the light through the tangled fabric of the thousands of lines of spaghetti code you are struggling with every single day. The refactoring patterns help a lot in understanding anti-patterns and design patterns.

Manrico Corazzi
this book is awesome really.
Nuno Furtado

I'd have to agree with Head First Design Patterns being the best one to read. It's witty, entertaining and informative. It made learning design patterns fun and easy. The GoF book, of course, is the ur-text, but it was difficult for me to read and easy book for me to put down. So, if you're interested in learning many (but not all) the GoF patterns without the tedium, I'd recommend Head First Design Patterns.

Patterns of Enterprise Application Architecture is another great book on patterns. It's very informative and easier to read than the GoF book, though much more serious than the Head First book.


The K&R C book.

I'll bite. I always got the impression that the GoF style "design patterns" were primarily an Object Oriented thing and that C was, err, not. Am I missing something?
+2  A: 

I recommend reading Christopher Alexander's A Pattern Language: Towns, Buildings, Construction first.

After that, many of the software patterns books mentioned above are fine, but you need to understand that software patterns have to fit the environment well, and cannot just be shoehorned in. Because of this, a book can only go so far. A book can't look at your system and see where the patterns fit to resolve the system of forces made up by the requirements.

The patterns books can only open your eyes and provide examples you may not have thought of - they can't really provide solutions.

Cade Roux

It has been a while since I read it but I did like Design Patterns for Object-Oriented Software Development by Wolfgang Pree

+1  A: 

Since no one has mentioned it, I'll throw in my lot with Design Patterns in C#. It covers the same patterns as the GoF book, and uses a consistent set of examples. Most of all, though, it has questions at the end of each chapter, and answers in the back. Take these tests seriously, and you'll "get it." (You'll also learn a few surprising nuances about C#.)

+2  A: 

C# 3.0 Design Patterns is really good if you're looking for something .NET-related. It's short and to the point, with lots of examples. It also makes use of the new C# 3.0 features and LINQ.

+6  A: 

Although it is not exclusively a design pattern book, I would like to recommend Working Effectively With Legacy Code. An excellent book for trying to make a legacy code base manageable. It is very well written with code examples in C, C++, Java and C#.

That's "Working Effectively wirh Legacy Code". Great book though!
Don Roby
+1  A: 

This is not a book, but I like it because it available for free on the web.

Bob Tarr's CMSC446 Introduction To Design Patterns.

Scroll down to "Lecture Notes".

Paul Croarkin

If you are doing programming that involves networking or multithreading, I found Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects to be very useful.

Lots of good patterns in there to separate out the tricky asynchronous behaviour of concurrency from the rest of the application logic.

Kiley Hykawy

Without kidding, I find Wikipedia is the best place to read about patterns. To get the best overall perspective on patterns you can start from here.

Besides in my own experience I apply many patterns from other fields besides computing. Biology and Sociology are especially useful for server patterns like redundancy, specialization, layered development, all (of course might as well forget about stuff like neural nets and all that crazy stuff, because you'll waste more time on it than you'll gain)

Robert Gould
+2  A: 

Object Oriented Software Construction by Bertrand Meyer is also very good book. Contains practical Design Principles and introduces the Design By Contract methodology. Wikipedia is also very good source to get overall picture and code implementations in different languages. is a great site to know about all patterns. contains useful lines from GOF book.

+2  A: 

Applying Domain-Driven Design and Patterns by Jimmy Nilsson.

David Robbins

In addition to the books referred above, I'd mention Analysis Patterns: Reusable Object Models. Although the patterns described inside are highly domain-specific, the whole book is a fascinating walk through the process of creating a pattern language, explaining the various tradeoffs involved, demonstrating ways for evolving software and accommodating new requirements and balancing simplicity vs rich functionality.


Since no one has mentioned it, I liked "Enterprise Solution Patterns" from MS PnP group. It does not describe many of GoF patterns, but whatever pattern it touches it does the best job.

It is not just bunch of patterns described using UML and in academic way. It describes the real life problem,scenarios and then the solution. Another good part is, it has C# code.

+1  A: 

"Design Patterns Explained" as introduction, wikpedia later.

+5  A: 

Design Patterns Explained, by Allan Shalloway.

This book is very different from other design pattern books because it is not so much a catalog of patterns, but primarily presents a way of decomposing a problem space that maps easily to patterns.

Problems can be decomposed into two parts: things that are common and things that vary. Once this is done, we map the common things to an interface, and the things that vary to an implementation. In essence, many patterns fall into this "pattern".

For example in the Strategy pattern, the common things are expressed as the strategy's context, and the variable parts are expressed as the concrete strategies.

I found this book highly thought provoking in contrast with other pattern books which, for me, have the same degree of excitement as reading a phone book.

Phillip Ngan
+1 for the "same degree of excitement as reading a phone book"
+3  A: 

These are books I've personally read and can suggest:

  • Design Patterns: Elements of Reusable Object-Oriented Software by Gamma, Helm, Jonson and Vlissides. EAN: 978-0201633610
  • Pro JavaScript Design Patterns by Harmes and Diaz. EAN: 978-1590599082
  • Head First Design Patterns. EAN: 9780596007126
  • Pattern-Oriented Software Architecture, Volumes 1 through 5. Multiple EANs

However, when looking at design patterns, sometimes it's fun to look outside of software to find interesting use of patterns everywhere. That being said I think there is a lot to learn from:

  • Chaos: Making a New Science, by Gleick. EAN: 978-0140092509
  • The Design of Everyday Things by Norman. EAN: 978-0465067107
  • Linked: How Everything Is Connected to Everything Else and What It Means. EAN: 978-0452284395
  • Turtles Termites and Traffic Jams by Resnick. EAN: 978-0262680936


+1  A: 

A good blog is which explains design patterns simply.

+1  A: 

This is a good website that has design pattern related articles in an easy to understand way:

Design Patterns in C#


I haven't tried GoF Design Patterns yet but I have recently read Head First Design Patterns and absolutely loved it. This book is the best way to learn design patterns.

Jahanzeb Farooq
+7  A: 

Head First Design pattern and Few websites which gives you how to use the desig patterns practically-


Wrox's Professional PHP Design Patterns by Aaron Saray is a great resource for all PHP developers. It's great in a sense that all examples are PHP codes that easier to understand than C++ (in contrast to the book) and beyond the reference material also provides a design case study that helps to understand while watching a real world application when and which patterns to apply.

Török Gábor
+1  A: 

5 Books I found really interesting are listed at my blog : 5 Design Pattern Books you must read

Hope this helps everyone.

Priya Dandekar