Working with entities
In domain-driven design, entities are defined by their identity. Their attributes do not define them, and it is expected that although their attributes may change over time, their identity will not. While the entity may change so much that it is indistinguishable from where it started, it retains the same identity, and we treat it as the same object. Let’s look at an example. On ebay.com, you can sign up as a user. If you choose to sell something, you become a seller. You can also choose to bid on items. A naïve model of this might look as follows:
Figure 3.1 – A simple domain model for an auction site
Some actions that could take place in our system are as follows:
- A user updates their address
- A user updates their email address
- An auction end time is updated
These actions do not change the identity of our entity. We are still referencing the same ID, but some attributes may have changed.
...