No exemplo criamos uma classe (AutenticacaoUtil) que implementa exatamente os métodos da interface (Autenticavel), porém a classe não implementa esta interface. Em vez disso, a classe é usada nas outras classes (ex.: Cliente, Administrador e Gerente) para evitar a duplicidade de código. Minha dúvida é:
Digamos que eu crie a classe Credenciais exatamente igual a AutenticacaoUtil, só que ela implementa Autenticavel. E então, ao invés das outras classes implementarem a interface Autenticavel eu teria apenas um atributo do tipo Credenciais nelas. Assim, não seria necessário ter o código que chama Credenciais dentro de cada classe. Ficaria ao estilo o código enviei. Essa abordagem é errada ou correta?
public class Credenciais implements Autenticavel {
private int senha;
public void setSenha(int senha) {
this.senha = senha;
}
public boolean autentica(int senha) {
if(this.senha == senha)
return true;
return false;
}
}
public class Cliente{
private Credenciais credenciais;
public Cliente() {
this.credenciais = new Credenciais();
}
public Credenciais getCredenciais() {
return credenciais;
}
public void setCredenciais(Credenciais credenciais) {
this.credenciais = credenciais;
}
}
public class TesteSistema {
public static void main(String[] args) {
Cliente c = new Cliente();
c.getCredenciais().setSenha(2222);
SistemaInterno si = new SistemaInterno();
si.autentica(c.getCredenciais());
}
}