Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Necessidade de criação de classe/interface

Não entendi muito bem qual a finalidade de criar uma classe 'ConverteDados' e uma interface 'IConverteDados' para fazer exatamente oq daria pra fazer diretamente com o método readValue() da classe ObjectMapper

Não seria melhor instanciar um ObjectMapper e usar diretamente o método readValue() ao invés de criar mais uma camada de classes por cima?

Com a mudança, o código que era assim (com a criação da classe/interface):

        ConverteDados conversor = new ConverteDados();
        DadosSerie dados = conversor.obterDados(json, DadosSerie.class);
        System.out.println(dados);		

Ficaria assim:

        ObjectMapper mapper = new ObjectMapper();
        DadosSerie dadosSerie = mapper.readValue(json, DadosSerie.class);
        System.out.println(dadosSerie);

A não ser que ao decorrer do curso a classe 'ConverteDados' seja populada com mais métodos diferentes, não vejo muito sentido de fazer essa abstração nesse momento

1 resposta
solução!

Olá, Gabriel.

Tudo bem?

Entendo sua pergunta e é uma ótima observação. A criação de uma classe 'ConverteDados' e uma interface 'IConverteDados' é uma prática comum em programação orientada a objetos e é conhecida como encapsulamento.

O encapsulamento é uma maneira de ocultar os detalhes de implementação de um objeto e expor apenas os métodos e propriedades necessários. Isso é feito para aumentar a modularidade e a manutenibilidade do código.

No seu exemplo, embora pareça mais simples usar diretamente o método readValue() da classe ObjectMapper, encapsular essa funcionalidade em uma classe separada tem várias vantagens:

  1. Reutilização de código: Se você precisar converter dados em outros lugares do seu código, você pode simplesmente instanciar um novo objeto ConverteDados e usar o método obterDados(). Isso evita a duplicação de código.

  2. Manutenibilidade: Se a maneira como você converte dados mudar no futuro (por exemplo, se você decidir usar uma biblioteca diferente em vez do ObjectMapper), você só precisa alterar o código em um lugar (dentro da classe ConverteDados), em vez de procurar e alterar todas as instâncias onde você usou ObjectMapper diretamente.

  3. Testabilidade: É mais fácil escrever testes unitários para uma classe que tem uma única responsabilidade (neste caso, converter dados) do que para uma classe que tem várias responsabilidades.

  4. Abstração: Ao usar a interface 'IConverteDados', você está abstraindo a implementação do método de conversão. Isso significa que você pode facilmente substituir a classe 'ConverteDados' por qualquer outra classe que implemente a interface 'IConverteDados', sem alterar o restante do seu código. Isso é útil se, por exemplo, você quiser ter diferentes maneiras de converter dados (por exemplo, uma que use ObjectMapper e outra que use uma abordagem diferente).

Portanto, embora pareça adicionar complexidade desnecessária no início, essas práticas podem economizar muito tempo e esforço à medida que seu projeto cresce e se torna mais complexo.

Espero ter ajudado e bons estudos!