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?
The book is split into four parts (five actually, if you count in the appendices), which I want to summarize here:
Part 1: BackgroundShould 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 DDDAbout 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.