Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola pessoal
Estou muito confusa em saber o que realmente é um value object. Pesquisei na internet e tive muitos exemplos diferentes.
Vou aplicar aqui o que eu entendi sobre VO. Por favor aos que sabem sobre este assunto me corrigem se eu estiver errada.
Vamos lá
Uma entidade é uma tabela no banco de dados é um value object é um valor(campo) dessa tabela "digamos assim", exemplo:
Vamos imaginar uma tabela chamada pessoa que possui os seguintes campos (id, nome),
a tabela pessoa também pode ter o campo contato, só que existe muitos tipo de contato diferentes (telefone residencial, telefone celular, email e muitos outros tipos de contato)
Para não acumular todos esses campos a cada tipo de contato na tabela pessoa, vamos fazer outra tabela chamada contato com os campos (id, nome_contato)
Bom até agora temos duas Entidades pessoa e contato, agora e a parte onde entra o value object onde vai fazer o intercambiado entre essas duas entidades.
Criaremos outra tabela com o nome pessoa_contato e terá o seguintes campos (id_pessoa, id_contato, descricao_contato)
A tabela pessoa_contato seria o value object , pois está juntando as duas tabela(Entidade) pessoa e contato.
Este meu intendimento está certo?? Espero a opiniões de vocês
desde já obrigada
Ola @William Bruno, tirei proveito sim do seu artigo :yes:
Mas foi pela seguinte razão: neste tópico aqui http://www.guj.com.br/java/68206-persistencia-de-um-value-object-ddd-na-pratica Todos que discutiram lá, concordaram que um value object faz um intercambiado entre duas entidades.
Ai aproveitei o conceito do seu artigo :rolleyes:
Mas agora que você falou que tudo isso não é um value object, poderia me explicar o que é um VO?
Oi @Lorena, eu entendo VO como sinônimo para DTO.
Como sendo (grossamente falando), uma linha de registro da tabela.
http://www.fragmental.com.br/wiki/index.php/Evitando_VOs_e_BOs.html#Transfer_Objects.2FValue_Objects
Da forma com que estão tratando o VO "hoje em dia"(objeto imutável, sem identidade...), esse padrão praticamente perdeu a utilidade, e para "não ferir ninguém", vamos usar TO ou DTO como nome. Muito esquisito isso.
Penso que é um tanto prejudicial para o entendimento de PHPOO ficar pensando no banco de dados e tabelas, é melhor procurar pensar em termos de modelagem de classes. Neste ponto o bd deve ser algo abstrato pois pode ser qualquer coisa como NoSQl ou até um txt.
Muito obrigada pela sua ajuda @william
Hoje em dia então o VO é tratado como DTO, interessante saber disso.
Poderia dá um exemplo simples william de um DTO em código?
@Lorena,
http://forum.imasters.com.br/topic/409112-proposta-de-fluent-interface-dao-phpoo/
O DTO era o responsável por transportar os valores do objeto ali. E esse DAO que implementei traduz em um SQL a saída. Se quiser colocar num NoSQL ou num txt, ai vc implementa outro DAO.
Oi @Lorena, essas duas entidades que vc usou, tem como origem o exemplo que fiz no meu post
http://wbruno.com.br/sql/afinal-o-que-e-entidade/
A idéia do post era explicar oque é uma entidade, e eu nunca falei de Value Object lá.
Value Object é um Design Pattern, e nada tem a ver com a tabela pessoa_contato. Essa idéia está errada.