1

I study GoF Design Patterns book and have Martin Fowler's PoEAA book in list. (I also have Judith Bishop's book which I personally do not like.) But there are more patterns, such as Delegation pattern. What is its origin? Are there other patterns not mentioned in these books? Are there other "must read" books or online resources on this topic?

Jan Turoň
  • 31,451
  • 23
  • 125
  • 169

4 Answers4

5

What is its origin?

Origins of Design Patterns

I did some research a while back and made some notes on the origins of design patterns. The below is a copy/paste from my personal notes I gathered at that time.

Initial Influence
The influence for design patterns in software engineering comes from a man named Christopher Alexander, a building architect (Houses not Software). He was well known for his theories about design and published a book in 1977, A Pattern Language. In this book Christopher Alexander discussed the idea of patterns as they could be reused and applied to complex and repetitive engineering tasks.

The move to software development
The work of Christopher Alexander, influenced Kent Beck and Ward Cunningham who applied that concept of classification of patterns to software development and introduced their work at the OOPSLA conference in 1987.

The Gang Of Four
Probably the most known source for design patterns and software development is the book: Design Patterns: Elements of Reusable Object-Oriented Software. The authors of this book are better known as the Gang Of Four who are Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides.

This book was the first design pattern book comming to press and was first made public at the OOPSLA conference in 1994.

Are there other patterns not mentioned in these books?

I have not read all the books you mentioned but when I did the PluralSight course on design patterns they have covered a lot, see list below.

  • Adapter Pattern
  • Bridge Pattern
  • The Builder Pattern
  • Chain of Responsibility
  • The Command Pattern
  • Composite Pattern
  • Decorator Design Pattern
  • Event Aggregator
  • Facade Pattern
  • Factory Patterns
  • Flyweight
  • Interpreter Pattern
  • Iterator Pattern
  • Lazy Load Pattern
  • Mediator Pattern
  • Memento
  • Model View Presenter (MVP) Pattern
  • Model View ViewModel (MVVM) Pattern
  • Null Object Pattern
  • Observer Pattern
  • The Prototype Pattern
  • Proxy Pattern
  • Repository
  • Singleton
  • Service Locator Pattern
  • State Pattern
  • Strategy Pattern
  • Template Method
  • Unit of Work
  • Visitor Pattern
Nope
  • 22,147
  • 7
  • 47
  • 72
4

Are there other patterns not mentioned in these books?

Definitely. The GoF patterns are kind of the grandaddies of it all, and fairly general, but you can have domain-specific patterns too. Like Fowler's PoEAA, as you mentioned. Or design patterns for embedded systems. But also more domain-specific than that, like Fowler's book on Analysis Patterns, which has financial and health care related patterns. Or patterns for avionics systems, like in the link available here at the Hillside Patterns Catalog.

What is its origin?

If you mean what is the origin of the Delegation pattern, I dunno, but someone has asked a similar question here.

Are there other "must read" books or online resources on this topic?

The amusingly-named "PLoP" conferences (Pattern Languages of Program Design) are the first place a fair few patterns are aired I believe.

There's a PLoP journal as well: Transactions on Pattern Languages of Programming.

I found Design Patterns Explained to be quite useful in explaining some of the original thinking behind the Gang of Four patterns. It's an explanation as opposed to a reference.

In addition to the PluralSight catalog mentioned elsewhere, NetObjectives have some great resources on patterns (and principles in general), particularly their series of webinars.

Community
  • 1
  • 1
ngm
  • 7,277
  • 1
  • 53
  • 62
  • 1
    I'm not 100% sure about all individual patterns but the base for most, if not even all, did not originate with the GoF. Christopher Alexander's book (mentioned in my post as well as in a post on the thread you linked) could most likely be the person who conceived those patterns or at least they original variations. Most likely the majority of patterns are not originated within the software but the construction or similar industry. Ken Beck and Ward Cunningham's paper on that subject also pre-dates GoF. Since then off course new patterns might have been designed unique to software architecture. – Nope Apr 29 '12 at 07:49
  • Oh and don't get me wrong please, your answer is perfect +1 from me anyway :), I just wanted to highlight that others have documented the concept before and suggested it to software architecture pre GoF. However, yes, GoF were the first to formulate the patterns in a book and yes, probably came up with a lot of variations for software architecture. It is, as you say, the grandaddy :) – Nope Apr 29 '12 at 07:58
  • @FrançoisWahl Yep absolutely. Alexander's book was definitely the main inspiration for the idea of software design patterns. I think they say as much in the GoF book, definitely in the Design Patterns Explained book anyway. I always just assumed that the inspiration was the *idea* of patterns though, and having a pattern language, not necessarily the patterns themselves. That would be interesting. Like you say as well, noone really invents a pattern, they just happen to be the first person to formally document what a lot of people are already doing. – ngm Apr 29 '12 at 09:34
1

Design Patterns: Elements of Reusable Object-Oriented Software and The Design of Everyday Things are very good books. I especially recommend the former for its intuitive read.

P.P
  • 117,907
  • 20
  • 175
  • 238
  • Incidentally, thanks for the "side effects" link about doing one's homework on Stack Overflow. Well worth the read. :) – sarnold Apr 29 '12 at 00:29
  • :) OP deleted that post. This is the link for others to read: http://stackoverflow.com/questions/4161475/counting-and-generating-perfect-squares – P.P Apr 29 '12 at 00:43
0

I think "must read" is terribly subjective, but I really learned a lot on the topic of design patterns from Head First Design Patterns. That said, 'Head First' books have a typical style in writing (I think I've heard someone describe it as goofy..) that might not suit everyone, for me it worked. I especially found it to be a bit more lightweight and easier to read than the aforementioned (albeit very good indeed) 'Gang of Four' book.

diggingforfire
  • 3,359
  • 1
  • 23
  • 33