ISP é a abreviação de Interface Segregation Principle é mais uma boa prática de software também proposta por Robert C. Martin (o Tio Bob)
Este recurso veio do seu trabalho de desenvolvimento de software para a empresa XEROX. O software realiza diversas tarefas e com o crescimento do mesmo a complexidade desta aplicação foi aumentando. Qualquer nova alteração demandariam muitas horas de trabalho.
Robert solucionou o problema separando as atividades de uma classe que era responsável por todas as atividades do software. Ao invés de ter uma classe pesada com varias responsabilidades ele foi separando as atividades em interfaces.
Um exemplo bem simples de implementação da segregação de interfaces. Iremos separar a interface pagamento em duas uma para pagamento em boleto e outra para pagamento em cartão.
interface Pagamento{ public function cobrarBoleto(); public function cobrarCartao(); } class Cobrar implements Pagamento { public function cobrarBoleto() { } public function cobrarCartao() { } interface Boleto { public function cobrarBoleto(); } interface Cartao { public function cobrarCartao(); } class CobrarBoleto implements Boleto { public function cobrarBoleto() { } } class CobrarCartao implements Cartao { public function cobrarCartao() { } }