I bought "Applying Domain-Driven Design and Patterns" based on a recommendation from Gernot Starke at his WJAX-Session. I expected to get some new ideas regarding “domain model development” (in the most general sense).

To cut it short, for me this book was a loss.

There is a simple test to check whether or not this book may be something for you:
  • Do you have deep Java expericence?
  • Are you familiar with Design Patterns?
  • Do you know about Domain-Driven Design?
If you can answer more than one question with "yes", don't buy this book because you are probably over-qualified.

The book is split into four parts (five actually, if you count in the appendices), which I want to summarize here:

Part 1: Background

Should be entitled “Object Orientation for Beginners” – Nilsson mainly explains basic terms like “GoF patterns”, “test-driven development”, or “layered architecture”.
Well, he admits (e.g. on page 13) that there is a huge gap between the “Microsoft world” and the “Java world” regarding these topics (he probably would skip these chapters if he was targeting Java developers), but I really expected something more than just rewriting stuff that should be commonsense for 10 years.

Part 2: Applying DDD

About building a domain model  - it is the strongest part of the book (especially chapter 7), but it contains nothing substancially new if you have read Eric Evan's book.
One thing that I never thought of in great detail: The internal state of a domain object has nothing to do with persistence! So a domain object can be “functional valid” regarding business rules, and “technical valid” (which means it can be persisted); but these two concerns should not be mixed up.

Part 3: Applying PoEAA

An introduction to O/R mappers. (Yep, that's all. If  you ever worked with Hibernate, you may safely skip this part).

Part 4: What's Next?

An introduction to SOA, dependency injection, AOP, and some GUI patterns - it has no real connection to the other parts of the book.