Continuando a série sobre SOLID, caso não tenha lido o artigo anterior:
[S.O.L.I.D.] Os Cinco Pilares da Programação Orientada a Objetos. [L] - Liskov Substitution Principle - LSP
Diego de Sousa Brandão ・ May 25
Neste artigo estarei falando sobre o quarto princípio que é:
[I] -Interface Segregation Principle,
Princípio da Segregação de Interfaces - ISP
“os clientes que implementam uma interface não devem ser obrigados a implementar uma ação/método que não utiliza”
Definição: Os clientes não devem ser forçados a depender de interfaces que não utilizam. Em outras palavras, é melhor ter várias interfaces específicas do que uma única interface geral.
Vamos considerar um exemplo do mundo real envolvendo um sistema de gerenciamento de funcionários em uma empresa. Este sistema precisa lidar com diferentes tipos de funcionários, como funcionários regulares, gerentes e funcionários terceirizados. Inicialmente, podemos ter uma interface única para gerenciar todos os tipos de funcionários, mas aplicaremos o ISP para melhorar o design.
Sem ISP
Interface EmployeeManagement sem ISP
Implementação HRSystem sem ISP
Neste exemplo, HRSystem é forçado a implementar métodos que não fazem sentido para ele (manageContractors), o que viola o ISP.
Com ISP
Para seguir o ISP, vamos dividir a interface EmployeeManagement em interfaces específicas para diferentes tipos de funcionários.
Interface ContractorManagement
Implementação HRSystem com ISP
Implementação ContractorManagementSystem com ISP
Explicação:
- Interface EmployeeManagement: Define operações genéricas para gerenciamento de funcionários, como contratação, atribuição de tarefas, cálculo de salário, etc.
- Interface ContractorManagement: Define operações específicas para gerenciamento de contratados, como gerenciamento de contratos.
- Classe HRSystem: Implementa a interface EmployeeManagement, fornecendo métodos para gerenciar funcionários da empresa.
- Classe ContractorManagementSystem: Implementa a interface ContractorManagement, fornecendo métodos para gerenciar contratados.
- Uso das Classes: Demonstramos como usar as diferentes classes e interfaces de maneira específica, sem forçar nenhuma classe a implementar métodos desnecessários.
Ao seguir o Princípio da Segregação de Interfaces, garantimos que nossas classes só implementem métodos que fazem sentido para elas, tornando o código mais claro e fácil de manter. Isso evita que classes dependam de métodos que não utilizam, promovendo uma melhor coesão e separação de responsabilidades.
PS: Para ir direto para o próximo princípio:
Top comments (0)