Duvidas conceituais sobre DDD + AGGREGATE e AGGREGATE ROOT  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
ravisantos
Entusiasta Java

Membro desde: 01/06/2009 17:56:34
Mensagens: 18
Offline

Olá tenho algumas dúvidas conceituais em relação a AGGREGATES e AGGREGATES ROOT.

Posso considerar uma AGGREGATE como a junção de uma ENTITY com um VALUE OBJECT, exemplo tenho o ex abaixo:

A ENTITY Cliente.


Um Value object Endereco


A classe abaixo seria uma AGGREGATE


Agora onde entra o AGGREGATE ROOT?

Obrigado!


cmoscoso
Virtual Machine Man

Membro desde: 23/10/2007 10:08:29
Mensagens: 687
Offline

ravisantos wrote:
Posso considerar uma AGGREGATE como a junção de uma ENTITY com um VALUE OBJECT...


Não, porque isto implicaria que todo AGGREGATE teria que possuir Value Objects, mas a existência ou não de Value Objects não é o que define o padrão AGGREGATE.

ps: Se considerarmos tipo Integer ou String como Value Objects e que todo AGGREGATE possui pelo menos uma ENTITY (o AGGREGATE ROOT) então talvez poderíamos concluir que todo AGGREGATE possui Value Objects no final, mas ainda assim sua definição de AGGREGATE é falha IMO.

ps: E na opinião do Eric Evans também.

ravisantos wrote:
Agora onde entra o AGGREGATE ROOT?

Obrigado!


Essa pergunta eu achei particularmente curiosa porque na minha concepção o AGGREGATE cresce a partir do ROOT, e não o contrário.

This message was edited 2 times. Last update was at 06/06/2009 13:21:57

[Email]
ravisantos
Entusiasta Java

Membro desde: 01/06/2009 17:56:34
Mensagens: 18
Offline

Olá , então realmente estou confuso nestes conceitos; Poderia dar um exemplo de um AGGREGATE ROOT e um AGGREGATE dentro de um sistema real?


Obrigado!
cmoscoso
Virtual Machine Man

Membro desde: 23/10/2007 10:08:29
Mensagens: 687
Offline

ravisantos wrote:Olá , então realmente estou confuso nestes conceitos; Poderia dar um exemplo de um AGGREGATE ROOT e um AGGREGATE dentro de um sistema real?


Obrigado!


Não estou com muita imaginação no momento pra inventar um sistema "real", mas vejo um aggregate se formando quando identifico uma entidade no domínio e um correspondente repositório que será utilizado para persistir a entidade. Na medida que novas responsabilidades são atribuídas à entidade ela vai "inchando" e então desmembrada em outros objetos, sendo que alguns desses objetos ainda mantém uma relação de consistência de dados com a entidade ROOT que precisa ser preservada. Este é o caso que precisa pertencer ao agregado. Uma entidade (inclusive o ROOT) pode conter tanto value objects como outras entidades, value objects não podem conter entidades. Todos esses objetos são alterados sempre por meio do repositório do ROOT que fica responsável de garantir a consistência das alterações.

Fui claro?

This message was edited 2 times. Last update was at 07/06/2009 23:07:48

[Email]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team