15 Value Objects

WHAT’S IN THIS CHAPTER?

  • An introduction to the value object DDD modeling construct
  • A discussion of what value objects are and when to use them
  • Patterns that have emerged for working with value objects
  • Options available for persisting value objects with NoSQL and SQL databases

Wrox.com Code Downloads for This Chapter

The wrox.com code downloads for this chapter are found at www.wrox.com/go/domaindrivendesign on the Download Code tab. The code is in the Chapter 15 download and individually named according to the names throughout the chapter. A domain model contains entities, which are akin to characters in a movie. And just like characters in a movie, it’s often their attributes that make entities interesting or useful. You might note that an attribute of James Bond is that he has a high level of charisma. Equally, you might find a BankAccount entity interesting if it has a large Balance attribute. Modeling these important descriptive attributes is the role of a Domain-Driven Design (DDD) construct known as the value object.

Value objects have no identity. They are purely for describing domain-relevant attributes of entities, usually in the form of some quantity. Having no identity to deal with often makes working with value objects relatively pain free and enjoyable. In particular, being immutable and combinable are two characteristics that support their ease of use. You will learn about these characteristics, along with other pertinent ones, in this chapter. ...

Get Patterns, Principles, and Practices of Domain-Driven Design now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.