Olá,
Sobre Domain-Driven Design, gostaria de saber se um Aggregate pode possuir membros (não-raíz) que sejam a raíz de outros aggregates… ou mesmo membros de outros aggregates…
Uma classe de um agregate conhece apenas classes que estejam dentro do agregate. Só o raiz conhece outros objetos externos, e ainda assim não pode conhecer os membros das agragações externas.
Pense que os membros do agregate são “private”. Assim ajuda a iluminar o que pode e o que não pode.
Certo… Então podemos dizer que, em geral, os agregates não possuem uma quantidade muito grande de entidades (ou VOs) em sua composição (em geral)? Correto?
Aproveitando, ainda sobre DDD… Os VOs podem ser representações de uma tabela no banco de dados? Exemplo, a tabela/Objeto (com chave-composta): coordenada(x,y,mapa_id) pode ser um VO?
Na maioria dos casos, você terá no máximo 3 ou 4 classes agregadas, acho.
Na maioria dos casos os VOs terão uma tabela correspondente, mas não é regra. É difícil analisar seu exemplo da coordenada pois não conhecemos o contexto de utilização, mas tô achando estranho esse mapa_id aí…
Entendi, esclareceu bem minha dúvida, quer dizer que não é porque o objeto não é uma entidade que ele não possua um id também, né? O exemplo da coordenada foi meio vago mesmo… mas eu entendi que depende do contexto.
Tenho me interessado por DDD ultimamente e, pelo que vi, muitos caras de .Net (mais especificamente de Alt.Net) têm publicado coisas bem interessantes sobre DDD (acho que isso já foi constatado aqui neste fórum, em algum outro post):