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
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.
cleriston
Na BO deveria validar o q então ?
Pois achei q na BO eu deveria forçar o usuario a nao cadastrar coisas erradas.
P
psevestre
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…
pcalcado
Pera, mas o que raios é um BO antes de mais nada?
danieldestro
Leia a primeira linha desta thread.
pcalcado
Eu já li, mas se você prefere: O que raios é um ‘Business Object’?
cleriston
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
pcalcado
Bom, se acompanhando com estas ‘classes de regras de negócio’ existirem ‘classes de dados’ recomendo a leitura urgente disso:
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]