Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Uso de interface ao invés de implementação do método direto na classe

Minha dúvida está na aula 01 do curso "Java: trabalhando com lambdas, streams e Spring Framework", gostaria de saber o porquê da escolha no uso de Interface para a implementação do método converterDados() na interface IConverteDados, ao invés de somente declará-lo dentro da classe ConverteDados, e não precisar sobrescrevê-lo.

Eu entendo da importância da programação orientada a Interfaces, explicada na formação de Java anterior, mas neste caso em específico fiquei muito em dúvida, já que era somente um método e este condizia exatamente com a semântica que o nome da classe ConverteDados transparecia.

Segue o código:

public interface IConverteDados {
    <T> T converterDados(String json, Class<T> classe);
}
public class ConverteDados implements IConverteDados{
    private ObjectMapper mapper = new ObjectMapper();

    @Override
    public <T> T converterDados(String json, Class<T> classe) {
        try {
            return mapper.readValue(json, classe);
        } catch (JsonProcessingException e) {
            throw new RuntimeException(e);
        }
    }
}
2 respostas
solução!

Olá! Tudo bem?

Usar uma interface permite que você tenha múltiplas implementações do mesmo método. Por exemplo, se no futuro você precisar de outra forma de converter dados, poderá criar uma nova classe que implementa a mesma interface IConverteDados, mas com uma lógica diferente. Isso promove a extensibilidade do seu código.

Interfaces facilitam a criação de testes unitários. Você pode facilmente criar mocks ou stubs de suas interfaces, o que simplifica o processo de teste, especialmente em cenários onde a implementação concreta depende de recursos externos.

A programação orientada a interfaces promove o desacoplamento entre componentes. Isso significa que outras partes do seu sistema podem depender da interface IConverteDados sem precisar conhecer a implementação concreta, o que melhora a modularidade e a manutenção do código.

Se um dia precisar substituir a implementação de ConverteDados, você pode fazê-lo sem alterar o código que depende da interface, desde que a nova implementação também siga o contrato da interface.

Embora, neste exemplo específico, a implementação direta na classe ConverteDados pareça suficiente, o uso de interfaces é uma prática que prepara seu código para ser mais robusto e adaptável a mudanças futuras. Isso é especialmente relevante em projetos maiores ou em equipe, onde a flexibilidade e a manutenção são cruciais.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Entendi perfeitamente Armano! Agradeço pela resposta!