MrDataFlex:
mas minha duvida persiste…
eu devo colocar o “BUSINESS” dentro do Objeto ou em classes separadas (BOs) ?
Valeu pessoal!
Se vc coloca o “business” dentro do objeto , por definição, esse objeto é um business object (BO).
Vc tem que colocar a logica em algum lugar. O lugar deve estar o mais próximo dos dados possivel.
A palavra chave é : possivel. Se a logica precisa de muitas entidades e contato com muitas partes do sistema,obviamente
ela não pode ficar num lugar isolado do sistema.
Então, contrua seus objetos e coloque o máximo de operações possiveis junto dos dados que elas usam.
à medida que o sistema cresce algumas logica têm que “subir de nivel” para poder usar mais dados. Ai vc faz um refactoring e promove essa logica. Existem padrões que precisam ser aplicados e não é simples criar um modelo bem desenhado.
Mas existem principios , directivas, que podem ser usadas. A principal é a encapsulação. Primeiro encapsule e só torne publico se for realmente necessário.
Agora, o que vc não deve nunca fazer é replicar informação e logica. Um logica deve estar apenas num lugar. se ela é usada em vários lugares crie um objeto que permita isso, não replique a logica.
Se vc cria um TO (aka DTO) e um BO vc está replicando a logica. Entenda que vc está separando os dados das logicas, e isso é sempre ruim. Entenda que mesmo quando a arquitetura pede que se usem TO, isso é feito por meio de infraestrutura, por truques, e não pelo programador.
Use o principio de separação de responsabilidade, mas não separe os dados das funçoes que os usam.
com exemplos práticos é mais facil, em termos gerais siga os padrões e as directivas.