Tenho uma classe de regra de negocios (Business Object) em que faz validação de 6 campos.
O que é mais correto :
-lançar 6 excessões e passá-las pelo Facade e mostrá-las na classe GUI
-Ou mostrar as 6 excessões dentro da classe de regra de negócios
??
Desde já fico grato
Um BO não deveria validar CAMPOS da tela.
Mas você pode ter uma classe de validação que retorna um objeto com mensagens de erro encontrados, por exemplo.
Na BO deveria validar o q então ?
Pois achei q na BO eu deveria forçar o usuario a nao cadastrar coisas erradas.
IMO, um BO deve lançar exce[color=red]ções[/color], e não exce[color=red]ssões[/color]. (desculpe, não resisti ;^))
Voltando. Acho razoável o BO parar na primeira inconsistência que encontrar e lançar uma IllegalArgumentException (ou classe derivada desta) contendo um CÓDIGO de erro. O código não precisa ser numérico, é claro. Aqui procuro usar algo que siga uma convenção do tipo “modulo.funcao.nn”, onde nn é um número seqüencial.
A camada de apresentação em princípio deveria saber quais os pré-reqs da chamada e, portanto, já é seu papel bloquear na medida do possível dados inconsistentes, e, aí sim, juntar todas as inconsistências em uma única mensagem. Não há nada mais tosco que um formulário de 10 campos em que, apesar de haver 3 inconsistências, a lógica mostra apenas a primeira, obrigando o usuário a fazer múltiplas correções…
Pera, mas o que raios é um BO antes de mais nada?
Leia a primeira linha desta thread.
Eu já li, mas se você prefere: O que raios é um ‘Business Object’?
psevestre fico grato pela sua observação em relação a gramática…
Eu me referi a Business Object a uma classe de regra onde fica concentrada as regras de negócios
Bom, se acompanhando com estas ‘classes de regras de negócio’ existirem ‘classes de dados’ recomendo a leitura urgente disso:
http://fragmental.com.br/wiki/index.php?title=Evitando_VOs_e_BOs
Li seu artigo, e parabenizo pelo mesmo.
Mas gostaria de discutir algumas coisas, mas se já tiver algum tópico relacionado a tal artigo, me indique q eu migro
[list]No mundo real, por exemplo, um carro não se “cria”. Não fica estranho as regras ficarem na VO?[/list]
[list]Em um esquema não anêmico, você faria os “set’s” e depois chamaria o metodo para validar. Neste mesmo método ele “se mandaria” para a DAO para gravar no banco?[/list]