Estou implementando um sistema desktop que fará uso de alguns patterns então surgiram algumas dúvidas:
Utilizando DAO a função do VO (Value Object) é proporcionar a tranferência de valores entre as camadas correto? imaginemos uma situação onde tivessemos:
Cliente = Bean como atributos, gets e sets.
ClienteDAO = implementa a persistência.
ClienteVO = :?: O Próprio Cliente é o Value Object :?: pois nele estão as informações…
Onde ficam concentradas as regras de negócio neste modelo :?: tais como: verificarSaldo(), listarUltimasCompras() por exemplo.
Posso usar o padrão Observable para fazer a população dos meus objetos UI ou existe outra técnica :?:
Se vc implementar Cliente só com getters/setters, sim, seu VO pode ser um objeto da própria classe Cliente. Mas isso não é o ideal, porquê você acaba criando um Anemic Domain Model, como alertado pelo cv há alguns dias atrás:
Poderiam ficar na própria classe Cliente, e aí vc usaria os VOs (ou TOs, Transfer Objects) para transportar os dados entre as camadas, como vc disse.
[]'s
rvaldomiro
Ok!
entendí o propósito dos VO´s então vamos prosseguir com o exemplo:
Eu teria então a classe Cliente com gets, sets, atributos e métodos de regra de negócio; a classe ClienteVO somente com gets, sets e atributos do domínio e a classe ClienteDAO para a persistência certo?? Isso quer dizer que minha classe Cliente deverá conhecer outros Beans para executar alguns métodos?? Por exemplo o método Cliente.varificarSaldo() deveria instanciar um objeto da classe Saldo e executar o método calcularSaldo(Cliente cliente) já que esta conhece e persiste as informações do Saldo, estou certo :!: :?:
caiofilipini
"rvaldomiro":
Por exemplo o método Cliente.varificarSaldo() deveria instanciar um objeto da classe Saldo e executar o método calcularSaldo(Cliente cliente) já que esta conhece e persiste as informações do Saldo, estou certo :!: :?:
Acho que o ideal aqui seria criar uma classe Conta, e não Saldo. E aí, seu Cliente teria uma Conta associada a ele. Exemplo: