A Solução proposta foi criar a classe AutenticacaoUtil e nas classes Cliente, Administrador, Gerente autenticar da seguinte forma:
public class Cliente implements Autenticavel {
private AutenticacaoUtil autenticador;
public Cliente() { this.autenticador = new AutenticacaoUtil(); }
@Override public boolean autentica(int senha) { return this.autenticador.autentica(senha); }
@Override public void setSenha(int senha) { this.autenticador.setSenha(senha);
}
}
Quando eu fui criar do meu jeito eu implementei da forma a seguir e gostaria de entender se existe alguma diferença entre elas além da forma de escrita, pois ambos funcionam aparentemente iguais.
public class Cliente implements Autenticavel {
private AutenticacaoUtil autenticador =new AutenticacaoUtil();
public Cliente(){ this.autenticador = new AutenticacaoUtil(); }
@Override public boolean autentica(int senha) { return autenticador.autentica(senha); }
@Override public void setSenha(int senha) { autenticador.setSenha(senha);
}
}