Pergunta

É um Objeto de Transferência de Dados mesmo como Objeto de Valor, ou que eles são diferentes?Se eles forem diferentes, onde devemos usar um DTO e onde se deve usar a VO?

A linguagem de programação que estamos a falar é Java, e o contexto é - não é uma aplicação web, que obtém dados a partir de um banco de dados e, em seguida, processa-os e, finalmente, a informação processada é apresentado no front-end

Foi útil?

Solução

Um objeto de valor é um objeto simples cuja igualdade não é baseada na identidade. Um objeto de transferência de dados é um objeto usado para transferir dados entre subsistemas de aplicativos de software, geralmente entre camadas de negócios e UI.Ele se concentra apenas em dados simples, então não tem nenhum comportamento.

Outras dicas

use um DTO no limite de seus serviços se não quiser enviar o objeto de domínio real aos clientes do serviço - isso ajuda a reduzir as dependências entre o cliente e o serviço.

objetos de valores são simplesmente objetos cuja igualdade não é baseada na identidade.java.lang.Integer

DTOs e objetos de valor não são alternativas entre si.

Um Objeto de Transferência de Dados é um kludge para mover um grupo de dados a partir de uma camada ou camada para outra, o objetivo é minimizar o número de chamadas e para trás pela embalagem um monte de coisas para a mesma estrutura de dados e enviá-lo juntos.Algumas pessoas também usá-lo, como Michael aponta em seu post aqui, de modo que as classes usadas por uma camada não são expostos à camada de chamá-lo.Quando me refiro ao DTO como um kludge, quero dizer, não há uma precisa conceito abstrato ficar implementado, é uma solução prática para ajudar com a comunicação entre as camadas de aplicação.

Um Objeto de Valor é algo em que estamos interessados apenas no seu valor, como um o valor monetário, um intervalo de data ou um código a partir de um tabela de pesquisa.Ele não tem uma identidade, ou seja, você não estaria em causa, se você tivesse vários deles, de se manter a par de qual é qual, porque não são coisas em si mesmas.

Contraste Objetos de Valor para as coisas que não têm uma identidade única no seu sistema, que são chamadas de Entidades.Se você tem um sistema em que as faixas de um cliente fazer o pagamento, o cliente e o pagamento são entidades, porque elas representam coisas específicas, mas a quantia monetária sobre o pagamento é apenas um valor, ele não tem uma existência, por si só, tão longe como o seu sistema está em causa.Como algo que se relaciona com o seu sistema determina se ele é um Objeto de Valor ou de uma Entidade.

Eles são diferentes, mas eu até usei os dois alternadamente no passado, o que está errado.Eu li que DTO (Data Transfer Object) era chamado de VO (Value Object) na primeira edição do livro Core J2EE Patterns, mas não consegui encontrar essa referência.

Um DTO, que às vezes chamo de Dumb Transfer Object para me ajudar a lembrar que é um contêiner e não deve ter nenhuma lógica de negócios, é usado para transportar dados entre camadas e camadas.Deve ser apenas um objeto com atributos que possuem getters / setters.

Um VO, entretanto, é semelhante a um JAVA Enum e representa um conjunto fixo de dados.Um VO não possui identidade de objeto (o endereço da instância do objeto na memória), é identificado por seu valor e é imutável.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top