[quote=x@ndy][quote=bacoco][quote=x@ndy]Segue o link para um artigo do Philip Calçado que fala sobre isso:
http://www.fragmental.com.br/wiki/index.php/Evitando_VOs_e_BOs.html[/quote]
x@andy,obrigado entendi o problema, porém ainda assim não enxerguei como seria uma boa solução…
Como então eu deveria seguir na criação de um projeto, acho que fiquei muito engessado com esse ideia de usar os TO’s… O conceito da união de logica e dados é algo que eu até entendi, mas não consigo “visualiza-la” , apenas consigo imagina-la como dados e logica de forma “separada”…[/quote]
Humm… pelo que eu vejo você está muito ligado no modelo procedural ainda!
Um exemplo simples seria uma nota fiscal. Considere que você tenha um Objeto NotaFiscal. Nela normalmente você teria os dados e uma outra classe para manipular esses dados com métodos como lancamento e cancelamento! O objeto NotaFiscal é totalmente burro, não faz nada e outro faz todas as operações mas não tem os dados. Porque não juntar os dois então?
Coloque os métodos lancamento cancelamento dentro do objeto NotaFiscal. Você tera um então um notaFiscal.lancar() e um notaFiscal.cancelar(). Pode haver metodos para busca também como NotaFisca.buscarPor(cliente);
Recomendo a leitura do livro Padrões de Projeto de Aplicações Corporativas do Martin Fowler e do livro da Livro Arquitetura e Design de Software do pessoal da Caelum![/quote]
Você esta correto, mas também tudo é muito relativo.
Usar BOs (ou services, EJBs, WS, qualquer outra coisa), pode não ser totalmente incorreto, pois há situações de processos que não são especificamente regras de negócio.
Há casos também onde no seu exemplo, lançar uma nota fiscal pode ocorrer de diversas formas diferentes, sendo que por exemplo, um operador possa lançar a nota fisca, um processo batch possa lançar, um gerente possa lançar, das mais variadas formas possiveis. Pode-se sim em determinados casos tratar a tal nota fiscal como “objeto anêmico”, mesmo ela tendo regras de negócio embutidas nela, por estas regras serem particulares de outra entidade ou processo.
Não sei se ficou claro…
Sou contra o modelo anêmico, vulgo aquele que toda tela no sistema tem um Controller, um Service, um DAO e um TO representando o resultado da query no banco de dados, mas acho que tudo tem de ser olhado com cautela… certas abordagens não são incorretas, dependendo da situação.