SOLID são princípios fundamentais na programação Orientada à Objeto (POO) que devem ser aplicados em qualquer linguagem de programação que siga o paradigma POO para a obtenção de qualidade superior de código e maior manutenibilidade.
S.O.L.I.D.:
- S – Single Responsability Principle (ou Princípio da Responsabilidade Única);
- O – Open-Closed Principle (ou Princípio Aberto-Fechado);
- L – Liskov Substitution Principle ( ou Princípio da Substituivção de Liskov);
- I – Interface Segregation Principle (ou Princípio da Segregação da Interface); e
- D – Dependency Inversion Principle (ou Princípio da Inverção de Dependência).
Artigo em construção.
—
1 – Single Resonsability: Coesão – Uma classe (ou módulo, função, etc) deve ter um e apenas um motivo para mudar
2 – Open Closed Principle: Hierarquia – aberta para expansão, fechada para modificação. – ao invés de crescer com ifs, para cada tipo… usa hierarquia.
3 – Liskov Substitution Principle: classes filhas nunca deveriam infringir as definições de tipo da classe pai;
Se algum código depende de uma classe, qualquer classe que a estenda deve poder ser utilizada no lugar. Com isso, se um comportamento for alterado no método, resultados inesperados podem ocorrer.
quadrado e retangulo, quadrado é um rentangulo de largura e altura iguais. Mas se você implementa ela pode usar a propriedade de set altura e de set largura, mesmo não sendo possivel.
as classes filhas devem respeitar quaisquer definições das classes base.
Que o Princípio de Substituição de Liskov (LSP) diz que devemos poder substituir classes base por suas classes derivadas em qualquer lugar, sem problema
4) Inversão de Dependência: Abstrações não devem depender de astrações, implementações devem depender de abstrações.
Classes concretas devem depender de interfaces. Classes abstratas e interfaces não devem depender de classes concretas.
ao inves de receber uma instancia de mysql, use a interface de banco de dados, assim é possivel adicionar ou alterar o banco de dados sem alterar o código.
Caso uma determinada implementação mude, não seremos afetados, pois dependemos apenas de sua interface. Se um método muda a forma como realiza sua tarefa, desde que a interface se mantenha, não vamos precisar nos preocupar nem em editar o nosso código.
5) Interface Segragation Principle: uma classe não pode ser forçada a depender de metodos que não utilizará.
se temos um objeto que implementa uma interface e um dos metodos não precisa ser implementado, significa que esse método deveria estar em outra interface.
—-
Referências Bibliográficas:
https://imasters.com.br/back-end/solid-com-php
https://medium.com/thiago-aragao/solid-princ%C3%ADpios-da-programa%C3%A7%C3%A3o-orientada-a-objetos-ba7e31d8fb25