Solid — I.S.P — Interface Segregation Principle
O Interface Segregation Principle (ISP) ou Princípio da Segregação de Interface trata das desvantagens da implementação de interfaces “gordas”.
Ao ISP atribuímos a seguinte premissa:
Make fine grained interfaces that are client specific.
ou
Crie interfaces granulares a específicas para os seus clientes.
Um outro mantra que simboliza muito bem a ideia do ISP é:
Clientes não devem ser forçados a depender de interfaces que eles não usam.
Aqui “Clientes” não são os usuários finais do sistema, e sim as classes e algoritmos que dependem de uma interface dentro do sistema.
De forma mais clara, podemos dizer que o principio prega que uma interface não deve forçar uma classe a implementar coisas que ela não irá utilizar.
Interfaces que tem muitos comportamentos (Interfaces gordas) geralmente se espalham pelo sistema trazendo complexidade e dificuldade de manutenção ao código.
Vamos ver um exemplo fácil de quebra desse princípio?
Perceba que a classe TelefoneCelular implementou a interface corretamente e todos os métodos eram usuais a classe.
Já para a classe TelefoneComum tivemos um método que lançou uma Exception, pois aquele metódo não tinha utilidade para a classe.
Percebemos que criarmos uma Interface genérica e nada específica às nossas classes isso pode gerar complexidade e difícil manutenção posterior ao código.
E como resolver e respeitar a premissa do principio?
Simples, criando interfaces específicas para as classes.
Concluindo a analise da premissa do ISP
A premissa do ISP nos alerta quanto a dependência e utilização de interfaces “gordas” que forçam os clientes a implementar métodos desnecessários.
Respeitando a premissa do ISP geramos facilidade de manutenção, pois temos especificidade nas classes clientes, quebramos o acoplamento entre as classes que a implementação de interfaces “gordas” traz e ainda ganhamos coesão e eficiência no código.
No próximo artigo finalizaremos os princípios do SOLID.
Deixem o seu comentário, compartilhem, e deixem sugestões de assuntos para abordarmos.
Grande [ ] e até a próxima.