Fowler's "Patterns of Enterprise Application Architecture" still relevant?

JavaJakarta EeArchitecturePoeaa

Java Problem Overview


I'm thinking of buying Martin Fowler's "Patterns of Enterprise Application Architecture".

From what I can see it seems like a great book, an architectural book with bias towards enterprise Java -- just what I need.

However, in computer years, it is quite old. 2003 was a long time ago, and things have moved on quite a bit since that time.

So I'm wondering if anyone can tell me: is this book still relevant, and worth the read?

Java Solutions


Solution 1 - Java

Yes, it is still very relevant and an excellent resource.

Solution 2 - Java

This book, and Eric Evans book about Domain-Driven Design, are my books of the year - every year ;) ...

Solution 3 - Java

It's very relevant. I frequently refer other developers to particular patterns from that book, as links to his site (<http://www.martinfowler.com/eaaCatalog/>;), such as Data Transfer Object and Service Layer.

The latter is one I thought I had "invented" until I saw that Fowler had already written about it.

Solution 4 - Java

Given that the answers to this question are now three years old, I felt it important to restate the relevance of Martin Fowler's patterns.

The GOF design patterns book was first published in 1994, and many of its patterns are still considered relevant. We may have come to a deeper understanding of them and produced subtle variants, but they are there as the foundation of any good OO design.

Modern languages increasingly implement some of the patterns behind the scenes so that the developer in theory doesn't have to know about them (an example is the Iterator pattern through the yield statement in C#). But, the developer is a better one for knowing them.

Moving on the Martin's book - this absolutely is still relevant. Its true that many libraries now support these patterns in the background, once again abstracting them away from the developer, but again they are at the core of enterprise application software development.

They solve problems that occurr again and again, regardless of language, system, or platform.

Solution 5 - Java

I disagree with the "bias towards Java" statement. Patterns, by their nature, are language-agnostic. They're defined as solutions to common problems. The copy of Fowler's book has examples in both Java and C#, so I can't see where the "bias" comes in. They're the most common object-oriented languages, and he's talking about object-oriented solutions to enterprise problems.

The GoF book has examples in Smalltalk and C++. Why are they so "biased" against Java and C#? Hint: the languages didn't exist when that book was written, but the patterns are as relevant as ever.

Solution 6 - Java

Solution 7 - Java

Absolutely!

The book is a classic. I've just been re-reading it to help with some work on event-driven accounting systems.

Fowler has been revisiting some of the patterns since and you can see his works in progress.

Solution 8 - Java

Very relevant, and certainly not chained to one language. Witness the upcoming Rails move to Merb, in a very real sense a move from one pattern in POEAA (ActiveRecord) to another (DataMapper).

Many other concepts, from ORM strategies to session management, are both relevant and language-agnostic. I'm still floored when I read this how vast Fowler's influence is. He didn't invent all of the concepts here, but he certainly codified and put names to these ideas in such an concise and accessible way as to make them common parlance across the industry. Still essential.

Solution 9 - Java

Yes the book is still relevant. You can pickup used copies on Amazon if you are worried about its value and sell it through the same channel.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJack SingletonView Question on Stackoverflow
Solution 1 - JavaMitch WheatView Answer on Stackoverflow
Solution 2 - JavamjnView Answer on Stackoverflow
Solution 3 - JavaJohn SaundersView Answer on Stackoverflow
Solution 4 - JavaJames WisemanView Answer on Stackoverflow
Solution 5 - JavaduffymoView Answer on Stackoverflow
Solution 6 - JavaThomas OwensView Answer on Stackoverflow
Solution 7 - JavaAndy DentView Answer on Stackoverflow
Solution 8 - JavaDave SimsView Answer on Stackoverflow
Solution 9 - JavaMcGovernTheoryView Answer on Stackoverflow