public interface DomainEvent extends ValueObject
A domain event always represent something that happened in the past. Its name must be in the past tense and be based upon the ubiquitous language.
A domain event can be as little as just a name. More often, it will contain values and identifiers that represent the relevant state at the time the event happened. That state should be minimized and the receivers should query the model to access additional information if necessary.
As they represent something in the past, domain events must be immutable. As such they can only contain immutable objects like value objects, primitive types, strings, etc…
Domain events are first and foremost about communication, within the system but also with other systems. A domain event should therefore be kept as simple as possible as be easy to serialize.
Example:
public class SomeDomainEvent implements DomainEvent { private String attribute1; private String attribute2; public SomeDomainEvent(String attribute1, String attribute2) { this.attribute1 = attribute1; this.attribute2 = attribute2; } @Override public int hashCode() { // implement based on all attributes } @Override public boolean equals() { // implement based on all attributes } // Other methods }
DomainEventHandler
,
DomainEventPublisher
,
ValueObject
equals, hashCode
Copyright © 2013-2018–2019 SeedStack. All rights reserved.