Oi Diego,
No 1º capítulo do curso tem um exercício que cita esse princípio, mas bem superficialmente.
A ideia do Interface Segregation Principle é você evitar ter interfaces "gordas" no seu projeto, ou seja, interfaces com muitos métodos que representam coisas distintas, pois isso vai obrigar todas as classes que implementarem essa interface a implementar todos os métodos, inclusive métodos que podem não fazer sentido para ela.
Exemplo:
public interface Autenticavel {
void autenticarComSenha(String login, String senha);
void autenticarComCartao(Cartao cartao);
}
public class Funcionario implements Autenticavel {
public void autenticarComSenha(String login, String senha) {
//logica de autenticacao com login/senha...
}
public void autenticarComCartao(Cartao cartao) {
//funcionario nao autentica com cartao...
throw new UnsupportedOperationException();
}
}
public class Cliente implements Autenticavel {
public void autenticarComSenha(String login, String senha) {
//cliente nao autentica com login/senha...
throw new UnsupportedOperationException();
}
public void autenticarComCartao(Cartao cartao) {
//logica de autenticacao com cartao...
}
}
Repare que nesse exemplo a interface define dois métodos, mas para cada classe apenas um deles faz sentido. Entretanto, as classes acabam sendo obrigadas a terem o outro método, que pode ou jogar uma exception, como fiz no exemplo, ou deixar o método vazio...
Isso é um exemplo de violação do princípio de Segregação de Interfaces.
Uma solução mais elegante, e que segue o princípio, poderia ser assim:
public interface AutenticavelComSenha {
void autenticar(String login, String senha);
}
public interface AutenticavelComCartao {
void autenticar(Cartao cartao);
}
public class Funcionario implements AutenticavelComSenha {
public void autenticar(String login, String senha) {
//logica de autenticacao com login/senha...
}
}
public class Cliente implements AutenticavelComCartao {
public void autenticar(Cartao cartao) {
//logica de autenticacao com cartao...
}
}
Repare que agora as interfaces estão "segregadas", e cada classe implementa apenas o que faz sentido.
Conseguiu entender melhor agora?
Bons estudos!