| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/07/2008 21:43:08
|
nicholas.bittencourt
JavaTeenager
![[Avatar]](/images/avatar/7522a10ddf6916abccf0163b58ca0543.jpg)
Membro desde: 17/01/2007 00:17:42
Mensagens: 161
Localização: Niterói, RJ, Brasil
Offline
|
Estou aprendendo DDD e modelando um sistema de controle academico para uma universidade como aprendizado. Ainda estou no comeco do sistema e por isso estou fazendo a parte do calendario administrativo. Minha duvida surgiu porque preciso manter uma regra de integridade do calendário. Deixe-me explicar...
Cada calendário possui sempre 3 datas obrigatorias, matricula, substituicao e cancelamento de disciplinas, e varias datas opcionais, como as datas de provas. As datas opcionais podem ser inclusas a qualquer momento no sistema mas as obrigatorias são criadas e injetadas pelo Factory do Calendario. Uma regra de integridade do sistema é que as datas obrigatorias devem ser sempre sequenciais, ou seja: matricula < substituicao < cancelamento. Todas essas datas estao em uma mesma lista.
Minha duvida é, quando devo fazer essa validação? Meu modelo deve estar sempre válido ou só preciso garantir isso no momento de persisti-lo no banco? Se for para manter a integridade dele sempre, como faco a validacao?
Pensei em criar um Policy e injetar no Calendario para validar a lista de datas sempre que o usuario tentar altera-las. Acontece que eu teria q, em um evento, ter conhecimento dos outros eventos para fazer a validacao. É certo isso? Alguma sugestao melhor?
Desculpa se ficou confuso, mas qualquer duvida podem me perguntar...
|
--
Nicholas Dacal A. Bittencourt
http://goronah.blog.br
We also realized that solving everyone?s problems was too big of a challenge for the first release. It would be better to build a product that a lot of people love, than one that everyone tolerates (...) - Paul Buchheit, Gmail Engineer |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/08/2008 16:52:11
|
Emerson Macedo
Virtual Machine Man
![[Avatar]](/images/avatar/360c19682e81f21d55846685c1701179.jpg)
Membro desde: 01/08/2006 16:55:28
Mensagens: 689
Localização: Rio de Janeiro - RJ
Offline
|
Se isso é uma regra referente o calendário, deve estar no metodo que altera as datas, que como você disse, está no objeto calendário. De qualquer forma, aqui no forum você vai encontrar as mais variadas opiniões de onde se deve colocar uma validação.
This message was edited 1 time. Last update was at 01/08/2008 16:53:32
|
Emerson Macedo Leite
PMP - Ping-pong Master Player
CSM - Counter-Strile Manager
http://codificando.com
"Porque, assim como o relâmpago sai do oriente e se mostra até o ocidente, assim será também a vinda do filho do homem." - Mateus 24:27 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/08/2008 00:18:53
|
pcalcado
Moderador
![[Avatar]](/images/avatar/110eec23201d80e40d0c4a48954e2ff5.jpg)
Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline
|
Isso não tem muita relação com Domain Driven Design mas sim com invariantes. Segundo seu texto a condição data1<Data2><Data3 é necessária para que o objeto seja válido logo ela é a invariante dele. Dê uma lida sobre design by contract>
|
Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/08/2008 08:03:42
|
TucaZ
Thread.start()
![[Avatar]](/images/avatar/c8cf7f213faa9bbcdeb7c.gif)
Membro desde: 13/09/2003 02:26:09
Mensagens: 37
Offline
|
Você poderia garantir essas invariantes através do método de criação da sua entidade em sua factory. Exponha apenas métodos de criação que recebam esses três paramêtros. Dessa maneira, você garante que toda criação da sua entidade vai ser feita utilizando esses paramêtros.
|
http://blog.tucaz.net |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/08/2008 08:48:44
|
pcalcado
Moderador
![[Avatar]](/images/avatar/110eec23201d80e40d0c4a48954e2ff5.jpg)
Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline
|
A Factory é ótima para evitar construtores que não garantem a invariante mas lembre-se que quem é responsável por sua invariante é o objeto.
|
Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay |
|
|
 |
|
|