DownloadDomain Model
Modeling Aggregates, Entities and Value Objects
Complex Heart allows you to model your domain Aggregates, Entities, and Value Objects using a set of traits. Great, but
why traits and not classes? Well, sometimes you have some kind of inheritance in your classes. Being forced to use a
certain base class is too invasive and personally, I don't like it. By using a set of traits and interfaces you have all
the functionality you need without compromising the essence of your own domain.
The available traits are:
-
`HasAttributes` Provide some functionality to manage attributes.
-
`HasEquality` Provide functionality to handle equality between objects.
-
`HasInvariants` Allow invariant checking on instantiation (Guard Clause).
-
`HasIdentity` Define the Entity/Aggregate identity.
-
`HasDomainEvents` Provide domain event management.
On top of those base traits Complex Heart provide ready to use compositions:
-
`IsModel` composed by `HasAttributes` and `HasInvariants`.
-
`IsValueObject` composed by `IsModel` and `HasEquality`.
-
`IsEntity` composed by `IsModel`, `HasIdentity`, `HasEquality`.
-
`IsAggregate` composed by `IsEntity`, `HasDomainEvents`.
For more information please check the wiki.
|