History
As with both the transaction script and active record patterns, the domain model pat‐ tern was introduced initially in Martin Fowler’s book Patterns of Enterprise Applica‐ tion Architecture. Fowler concluded his discussion of the pattern by saying, “Eric Evans is currently writing a book on building Domain Models.” The referenced book is Evans’s seminal work, Domain-Driven Design: Tackling Complexity in the Heart of Software.
In his book, Evans presents a set of patterns aimed at tightly relating the code to the underlying model of the business domain: aggregate, value objects, repositories, and others. These patterns closely follow where Fowler left off in his book and resemble an effective set of tools for implementing the domain model pattern.
The patterns that Evans introduced are often referred to as tactical domain-driven design. To eliminate the confusion of thinking that implementing domain-driven design necessarily entails the use of these patterns to implement business logic, I pre‐ fer to stick with Fowler’s original terminology. The pattern is “domain model,” and the aggregates and value objects are its building blocks.