share
Stack OverflowWhat are the best design patterns books you have read?
[+115] [48] Svet
[2008-09-19 20:02:42]
[ design-patterns books ]
[ http://stackoverflow.com/questions/105049/what-are-the-best-design-patterns-books-you-have-read ] [DELETED]

What are your favorite ones?

(7) Why not have a list in the question itself, when its a community wiki? - noob.spt
[+156] [2008-09-19 20:03:29] scubabbl

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

[1] http://oreilly.com/catalog/9780596007126/

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. - DevelopingChris
+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
(6) 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
(2) You don't receive reputation for "community wiki editable". - Kevin
Ahhh. I did not know that. Good to know. Thanks. - scubabbl
This book is awesome. - Ybbest
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. - kyoryu
I really like these kinds of visual books. Remindes to that I once began research regarding visualization ;) - wishi
this is a Great Book ! - Attilah
This is a great book. I'm reading right now. - Zeck
1
[+97] [2008-09-19 20:04:30] Kevin

The classic Gang of Four book:

Design Patterns: Elements of Reusable Object-Oriented Software [1]

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

[1] http://rads.stackoverflow.com/amzn/click/0201633612

(31) its a textbook, and can put a caffeined up crack monkey straight to sleep, but its the quintessential book. - DevelopingChris
(2) ChanChan, I read that book cover to cover once...It's not that bad. - Thomas Owens
none better +1. - Mawg
it's a reference book, for reference - Ion Todirel
2
[+41] [2008-09-19 20:05:38] RichH

Patterns of Enterprise Architecture [1] - Martin Fowler

[1] http://rads.stackoverflow.com/amzn/click/0321127420

3
[+23] [2009-09-05 22:48:28] JuanZe

Design Patterns: Elements of Reusable Object-Oriented Software [1] by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides. : the classic GOF (Gang of Four) book, the default choice to start reading.

Pattern Hatching: Design Patterns Applied [2] by John M. Vlissides A great complementary reading for the GOF patterns. Offers 10 myths about patterns, shows how to apply several patterns (drawn from the original 23) in a file system. Also includes some patterns that were left out of the GOF.

Implementation Patterns [3] by Kent Beck and Refactoring to Patterns [4] by Joshua Kerievsky are really useful to match the design process using patterns and the programming issues that patterns can solve at code level.

Some useful pattern books on high level enterprise solutions to recurrent problems that architects face on every project are Patterns of Enterprise Application Architecture [5] by Martin Fowler and the canonical resource to get insight on messaging architectures: Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions [6] by Gregor Hohpe y Bobby Woolf

Great resources to learn how to think in patterns and do correct OOP analysis and design are Analysis Patterns: Reusable Object Models [7] by Martin Fowler and Applying UML and Patterns [8] by Craig Larman. Also I need to mention here Domain-Driven Design: Tackling Complexity in the Heart of Software [9] by Eric Evans, the most valuable book I found to think about the whole software design process.

Finally, my absolute favourite pattern catalog: Organizational Patterns of Agile Software Development [10] by James O. Coplien. This book isn´t about software patterns, is about people, a catalog for creating successful teams. Every manager should read this book!

Organization Patterns of Agile Software Development

[1] http://rads.stackoverflow.com/amzn/click/0201633612
[2] http://rads.stackoverflow.com/amzn/click/0201432935
[3] http://rads.stackoverflow.com/amzn/click/0321413091
[4] http://rads.stackoverflow.com/amzn/click/0321213351
[5] http://rads.stackoverflow.com/amzn/click/0321127420
[6] http://rads.stackoverflow.com/amzn/click/0321200683
[7] http://rads.stackoverflow.com/amzn/click/0201895420
[8] http://rads.stackoverflow.com/amzn/click/0137488807
[9] http://rads.stackoverflow.com/amzn/click/0321125215
[10] http://rads.stackoverflow.com/amzn/click/0131467409

4
[+16] [2008-09-19 20:34:44] Manrico Corazzi

I would recommend Refactoring: Improving The Design Of Existing Code [1] 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.

[1] http://rads.stackoverflow.com/amzn/click/0201485672

this book is awesome really. - Nuno Furtado
5
[+13] [2008-09-19 20:07:22] christopher_f

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

[1] http://www.industriallogic.com/xp/refactoring/

6
[+8] [2008-09-19 20:21:15] reefnet_alex

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 on, 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...


7
[+7] [2008-09-19 20:05:09] Gabriel Isenberg

I'm a huge fan of " Holub on Patterns: Learning Design Patterns By Looking At Code [1]." 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.

[1] http://www.holub.com/goodies/patterns/

+1 for that salty man's book ref! - mlvljr
8
[+7] [2008-09-19 21:46:29] LittleBoyLost

Although it is not exclusively a design pattern book, I would like to recommend Working Effectively With Legacy Code [1]. 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#.

[1] http://rads.stackoverflow.com/amzn/click/0131177052

That's "Working Effectively wirh Legacy Code". Great book though! - Don Roby
9
[+7] [2008-12-03 03:43:07] Phillip Ngan

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.


+1 for the "same degree of excitement as reading a phone book" - elviejo
10
[+6] [2008-09-19 20:10:58] Lars A. Brekken

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

http://www.amazon.com/Pattern-Oriented-Software-Architecture-System-Patterns/dp/0471958697 [1]

[1] http://rads.stackoverflow.com/amzn/click/0471958697

11
[+6] [2008-09-19 20:15:35] jop

My favorites have already been mentioned above. I'll just add in Uncle Bob's Agile Principles Patterns and Practices. Not just about design patterns, but also about design principles.

alt text

Eric Evans' Domain Driven Design is also very good.

alt text

Finally, Pattern Languages of Program Design [1]

[1] http://rads.stackoverflow.com/amzn/click/0201607344

12
[+4] [2008-09-19 20:06:09] Rosellyne Thompson

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

[1] http://rads.stackoverflow.com/amzn/click/0201633612

13
[+4] [2008-09-19 20:21:41] Kevin Pauli

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

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

[1] http://rads.stackoverflow.com/amzn/click/0321200683

14
[+3] [2008-09-19 20:31:05] Scott

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


15
[+3] [2008-09-19 21:36:12] Cade Roux

I recommend reading Christopher Alexander's A Pattern Language: Towns, Buildings, Construction [1] 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.

[1] http://rads.stackoverflow.com/amzn/click/0195019199

16
[+3] [2009-01-26 21:06:57] earino

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

Cheers!


17
[+2] [2008-09-19 21:42:18] harpo

Since no one has mentioned it, I'll throw in my lot with Design Patterns in C# [1]. 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#.)

[1] http://rads.stackoverflow.com/amzn/click/0321126971

18
[+2] [2008-09-19 21:44:24] sker

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.


19
[+2] [2008-09-28 15:31:51] Yogesh

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. http://www.vincehuston.org/dp/ is a great site to know about all patterns. contains useful lines from GOF book.


20
[+2] [2008-10-04 03:22:41] David Robbins

Applying Domain-Driven Design and Patterns by Jimmy Nilsson.


21
[+2] [2008-10-20 20:06:21] Sergey

"Design Patterns Explained" as introduction, wikpedia later.


22
[+2] [2009-08-23 22:06:19] DotnetDude

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

Design Patterns in C# [1]

[1] http://www.dotnetcube.com/?tag=/design-patterns

23
[+2] [2010-06-08 00:13:22] Priya Dandekar

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

Hope this helps everyone.

[1] http://www.fromdev.com/2010/06/5-best-design-pattern-books-you-must.html

24
[+1] [2008-09-19 20:21:57] Codie

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

[1] http://www.industriallogic.com/xp/refactoring/

25
[+1] [2008-09-19 20:23:19] logoin

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.


26
[+1] [2008-09-19 20:28:22] skinp

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.


27
[+1] [2008-09-21 15:54:22] Paul Croarkin

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.

http://userpages.umbc.edu/~tarr/dp/spr06/cs446.html

Scroll down to "Lecture Notes".


28
[+1] [2008-09-26 15:12:22] Robert Gould

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 [1].

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)

[1] http://en.wikipedia.org/wiki/Design_patterns

29
[+1] [2009-07-31 04:18:55] Seth

A good blog is http://blog.cumps.be/design-patterns-strategy-pattern/ which explains design patterns simply.


30
[0] [2008-09-19 20:04:23] Charles Roper

Design Patterns in Ruby [1]

[1] http://designpatternsinruby.com/

31
[0] [2008-09-19 20:07:26] ragu.pattabi

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

I really liked 'Design Patterns in Ruby' too.


32
[0] [2008-09-19 20:19:21] Internet Friend

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


33
[0] [2008-09-19 20:24:46] Leech

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]

[1] http://rads.stackoverflow.com/amzn/click/1590593804

34
[0] [2008-09-19 21:00:00] chrucci

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.


35
[0] [2008-09-19 21:40:02] epatel

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

[1] http://rads.stackoverflow.com/amzn/click/0201422948
[2] http://en.wikipedia.org/wiki/Wolfgang_Pree

36
[0] [2008-09-26 15:06:30] Kiley Hykawy

If you are doing programming that involves networking or multithreading, I found Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects [1] 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.

[1] http://rads.stackoverflow.com/amzn/click/0471606952

37
[0] [2008-10-12 12:49:47] ddimitrov

In addition to the books referred above, I'd mention Analysis Patterns: Reusable Object Models [1]. 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.

[1] http://rads.stackoverflow.com/amzn/click/0201895420

38
[0] [2008-10-20 20:00:44] Pradeep

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.


39
[0] [2009-08-28 12:13:16] Jahanzeb Farooq

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

[1] http://rads.stackoverflow.com/amzn/click/0596007124

40
[0] [2009-10-05 19:38:09] Semih

http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612 [1]

[1] http://rads.stackoverflow.com/amzn/click/0201633612

41
[0] [2010-02-16 11:27:47] gmhk

Head First Design pattern and Few websites which gives you how to use the desig patterns practically- cricandcric.com [1]

[1] http://www.cricandcric.com

42
[0] [2010-04-29 11:01:23] Török Gábor

Wrox's Professional PHP Design Patterns [1] 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.

[1] http://www.wrox.com/WileyCDA/WroxTitle/Professional-PHP-Design-Patterns.productCd-0470496703.html

43
[0] [2011-01-26 19:19:47] mike

I suggest "Applying UML and Patterns" , it's very good to understand GRASP , a set of useful design guidlines and principles.


44
[0] [2011-04-07 11:30:10] Ansari

According to me following two books are BEST indeed:

  1. Head First Design Pattern By Eric Freeman & Elisbeth Freeman with Kathy Sierra & Bert Bates
  2. Design Patterns By Eric Gamma, Richard Helm, Ralph Johnson & John Vlissides

45
[-1] [2008-09-19 20:17:59] Chris

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


(1) why not vote up, if you have nothing to actually contribute to this answer? - DevelopingChris
46
[-1] [2008-09-19 21:35:22] stu

The K&R C book.


(2) 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? - reefnet_alex
47
[-2] [2008-09-19 20:06:47] unforgiven3

The Gang of Four book is always a great reference.


48