DDD
by Michael Schnell
1. Entity
1.1. Has an identity
1.2. Contains value objects
1.3. May contain other entities
2. Value Object
2.1. Has NO identity
2.2. Is only defined by it's attributes
3. Aggregate
3.1. Is a cluster of associated entities
3.2. Has a set of consistency rules
3.3. Changes are done in a single transaction
3.4. Objects within the Aggregate can hold references to other Aggregate roots
3.5. Entities inside the boundary have local identity, unique only within the Aggregate.
3.6. Aggregate Root
3.6.1. Is an entity with a global identity
3.6.2. External references to an aggregate root should be restricted to it's ID (No object references)
3.6.3. Can hand references to the internal Entities to other objects (outside the aggregate), but they can only use them transiently (within a single method or block).
3.6.4. Only methods of this object may be called from outside
4. Service
4.1. Function
4.1.1. Computes and returns a result
4.1.2. Is stateless
4.1.3. Has no side effects