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

Beneficios de interface

Uma dúvida que me veio foi a seguinte, no exemplo do Bytebank, onde temos uma classe SistemaInterno

public class SistemaInterno {

    private int senhainterna = 2222;

    public void autentica(Autenticavel fa) {
        boolean autenticou = fa.autentica(senhainterna);
        if(autenticou) {
            System.out.println("Entro");
        }
        else {
            System.out.println("Nem");
        }
    }

}

A interface Autenticavel

public abstract interface Autenticavel {

    public abstract void setSenha(int senha);
    public abstract boolean autentica(int senha);


}

Podemos utilizar a interface como beneficio de um cliente e um gerente acessar o SistemaInterno e superamos o fato de antes estar utilizando herança e o cliente acabava se tornando um funcionário. Mas uma coisa que achei estranha foi o seguinte, eu tenho o metodo getSenha e autentica nas classes Gerente, Cliente, Administrador e outras classes se necessário, e ai tem muito código repetido, o mesmo metodo get e autentica copiado em várias partes do código, teria alguma forma de centralizar este código ou através de interfaces cada metodo só poderá mesmo ser implementado direto em cada classe?

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta
solução!

Oi João, tudo bom?

Boa colocação! Realmente, quando usamos interfaces somos obrigados a implementar os métodos em todas as classes. E, muitas vezes, a implementação entre uma e o outra é identica mesmo.

Porém, repetir esse código é um dos pouquissimos casos em que repetição de código não é um problema. Isso porque mesmo com a repetição o código é mais desacoplado.

Provavelmente, a implementação desses getters e setters não vão mudar ao longo do tempo. Isso significa que não seriam diversos pontos de manutenção então provavelmente não seria uma causa de bug no futuro =)

A gente pode tentar reduzir a repetição dos métodos criando classes abstratas que mais de uma classe herde. Porém, pra que isso se faça possível precisamos que a regra de negócio permita essa extração.

Mas, de modo geral não é nem necessário realizar esse tipo de modelagem já que não estamos falando de um cenário nocivo pra manutenção do sistema =)

Abraço