Tentando converter algumas entidades em objetos de valor, estou preso em um caso em que o que parece um objeto de valor deve ser único dentro de um agregado.
Suponha que tenhamos uma entidade Movie que faça a raiz de um agregado. Essa entidade Movie está relacionada a algum conjunto de objetos AdvertisementEvent com a função de exibir um anúncio em determinado carimbo de data / hora.
O AdvertisementEvent contém um link para algum banner que deve ser exibido, as coordenadas e alguns filtros de efeito.
Como AdvertisementEvent é apenas uma coleção de parâmetros de configuração, não tenho certeza se devo me preocupar com sua identidade e tratá-la como apenas um objeto de grande valor. No entanto eu me importo que dentro de um filme deve haver apenas um AdvertisementEvent em uma determinada data e hora, provavelmente ainda em torno a data e hora.
Acho difícil dividir minhas dúvidas em várias perguntas independentes, então lá vão elas:
- Uma coleção de parâmetros de configuração soa como um objeto de valor?
- Estou misturando o conceito de exclusividade do AdvertisementEvent no Movie e a regra de integridade transacional?
- Será que qualquer das opções no ponto (2) implica que AdvertisementEvent deve ser um membro do agregado feito por filme ?
- Meu objeto AdvertisementEvent é uma entidade, um objeto de valor ou um objeto de evento? (Usei o sufixo Event no nome para destacar minha confusão)
- Objetos de grande valor como este são cheiros de design?
Acho que não estou lidando com um evento no sentido de DDD, porque não é algo que simplesmente acontece . O verdadeiro evento DDD deve ser algo mais como AdvertisementEventReached