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?

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