Princípio da Segregação de Interface (ISP)

Definição

O Princípio da Segregação de Interface (Interface Segregation Principle – ISP) estabelece que nenhuma entidade deve ser forçada a depender de métodos que não utiliza.

Isso significa que é melhor ter várias interfaces específicas e coesas do que uma única interface genérica e inflada. O ISP é o quarto princípio do SOLID, um conjunto de boas práticas para design orientado a objetos.

Por que é importante

Interfaces grandes impõem implementações desnecessárias a classes que não precisam de todos os métodos. Isso aumenta o acoplamento e dificulta a manutenção.

Com interfaces menores e mais focadas, as classes implementam apenas os comportamentos relevantes para o seu papel, favorecendo coesão, legibilidade e evolução do sistema.

Exemplo prático (Python)

Considere uma interface genérica que exige que todos os animais saibam voar:

from abc import ABC, abstractmethod

class Animal(ABC):
    @abstractmethod
    def comer(self):
        pass

    @abstractmethod
    def voar(self):
        pass

Agora veja duas implementações distintas:

class Passaro(Animal):
    def comer(self):
        print("Bicando sementes")

    def voar(self):
        print("Voando pelo céu")

class Cachorro(Animal):
    def comer(self):
        print("Comendo ração")

    def voar(self):
        raise NotImplementedError("Cachorros não voam")

O Cachorro é forçado a implementar um método que não faz sentido — isso viola o ISP. A classe depende de um comportamento (voar) que nunca irá utilizar.

Aplicando o ISP, podemos dividir a interface em duas:

class Animal(ABC):
    @abstractmethod
    def comer(self):
        pass

class Voador(ABC):
    @abstractmethod
    def voar(self):
        pass

Agora cada classe implementa apenas os comportamentos relevantes:

class Passaro(Animal, Voador):
    def comer(self):
        print("Bicando sementes")

    def voar(self):
        print("Voando pelo céu")

class Cachorro(Animal):
    def comer(self):
        print("Comendo ração")

Com isso, respeitamos o ISP: Cachorro não precisa conhecer ou implementar comportamentos de voo que não fazem sentido para ele. O código fica mais limpo e alinhado à responsabilidade real de cada classe.

Relacionados

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com