For the last year or so, I’ve been struggling with what Martin Fowler calls the Anemic Domain Model. The development teams at one of my clients, employ Java in a fashion where OO concepts are sometimes hard to find. Java objects are used as mere dataholders and business logic is scattered all around the place but mostly concentrated inside stored procedures. It also doesn’t help that alot of frameworks and libraries used nowadays, such as JPA/hibernate, Jackson, etc., rely heavily on the JavaBeans specifications thereby inadvertently encouraging the Anemic Domain Model anti-pattern.
So as of late, I found myself once again refreshing my memory on the concepts of domain-driven design (DDD). The authority on the subject, of course, is Eric Evans. He gave a full day (6 hours) lecture on the topic at Javapolis (now called Devoxx) in 2006, which I was fortunate enough to attend. Afterwards, I bought his book “Domain-Driven Design – Tackling Complexity in the Heart of Software”.
Although Eric Evan’s book is the reference on Domain-Driven Design, as a non-native English spreaker, at times I found it too academical making it a bit difficult to read. But then, last year I discovered Vaughn Vernon’s book “Implementing Domain-Driven Design”:
Vaugn Vernon has managed to write a book that not only teaches the core DDD concepts but also provides the tools to put it into practice. The work is filled with a wealth of knowledge but still succeeds in being easy to read and hold your attention throughout all of the nearly 600 pages. For any OO-developer looking to get started with DDD or anyone in need of a refresher course (like I was), this is definitely a read well-worth your time. I would give it a rating of 4.5/5, just missing out on a full score because of a tad too much focus on messaging and event sourcing for my personal taste.