Os princípios SOLID em imagens
Se uma Classe tiver muitas responsabilidades, aumenta a possibilidade de bugs, pois fazer alterações em uma de suas responsabilidades pode afetar as outras sem você saber.
Meta
Este princípio visa separar comportamentos para que, se surgirem bugs como resultado de sua mudança, isso não afete outros comportamentos não relacionados.
O - Aberto-Fechado
As aulas devem ser abertas para extensão, mas fechadas para modificação
Quando uma classe filha não consegue realizar as mesmas ações que sua classe pai , isso pode causar bugs.
Se você tiver uma Classe e criar outra Classe a partir dela, ela se tornará pai e a nova Classe se tornará filha. A classe filha deve ser capaz de fazer tudo o que a classe pai pode fazer. Este processo é denominado Herança .
A classe filha deve ser capaz de processar as mesmas solicitações e entregar o mesmo resultado que a classe pai ou pode entregar um resultado do mesmo tipo.
A imagem mostra que a turma pai entrega café (pode ser qualquer tipo de café). É aceitável que a turma infantil entregue Cappucino por se tratar de um tipo específico de Café, mas NÃO é aceitável entregar Água.
Se a classe filha não atender a esses requisitos, significa que a classe filha foi completamente alterada e viola esse princípio.
Meta
Este princípio visa reforçar a consistência para que a classe pai ou sua classe filha possam ser usadas da mesma maneira, sem erros.
I – Segregação de Interface
Os clientes não devem ser forçados a depender de métodos que não utilizam.
Em primeiro lugar, vamos definir os termos usados aqui de forma mais simples
Módulo (ou Classe) de Alto Nível : Classe que executa uma ação com uma ferramenta.
Módulo (ou classe) de baixo nível : a ferramenta necessária para executar a ação
Abstração : representa uma interface que conecta as duas classes.
Detalhes : Como funciona a ferramenta
Este princípio diz que uma Classe não deve ser fundida com a ferramenta que utiliza para executar uma ação. Em vez disso, deve ser fundido à interface que permitirá que a ferramenta se conecte à Classe.
Diz também que tanto a classe quanto a interface não devem saber como funciona a ferramenta. Porém, a ferramenta precisa atender às especificações da interface.
Meta
Este princípio visa reduzir a dependência de uma classe de alto nível em relação à classe de baixo nível, introduzindo uma interface.