2
respostas

Sobre interface e duplicação de código

No inicio do curso ao implementar as classes concretas mostrou um problema que era a duplicação de código em cada uma para autenticar senha, mas com a interface não ficou igual antes, digo depois de "assinar o contrato" ainda tenho q duplicar o código em cada classe concreta, alguem pode me explicar melhor?

2 respostas

Boa noite Carlos, tudo bem?

A redução de código não está associada às implementações da interface pois é necessário escrever a lógica em cada implementação. A diminuição de duplicidade de código acontece no momento de uso das implementações, pois essas podem ser substituídas pela interface conforme exemplo.

public interface Arquivo {
    void imprime();
}
public class ArquivoPDF implements Arquivo {

    @Override
    public void imprime() {
        System.out.println("Imprimindo PDF");
    }
}
public class ArquivoTexto implements Arquivo {

    @Override
    public void imprime() {
        System.out.println("Imprimindo Texto");
    }
}
public class Impressora {

    /*
        O metodo imprimir recebe como parametro qualquer implementação que assine o contrato
        Arquivo, logo não precisamos duplicar código para ter métodos específicos de impressão para PDF e Texto.
    */
    public void imprime(Arquivo arquivo) {
        arquivo.imprime();
    }
}
public class TesteInterface {

    public static void main(String[] args) {
        ArquivoPDF pdf = new ArquivoPDF();
        ArquivoTexto texto = new ArquivoTexto();

        Impressora impressora = new Impressora();
        impressora.imprime(pdf);
        impressora.imprime(texto);
    }
}

Entendi obrigado. Se eu tivesse esperado pra ver a aula 07.Praticando herança e interfaces teria ficado mais claro também, obrigado pelo seu tempo xD