S – Single Responsibility Principle (Princípio da Responsabilidade Única) – Uma classe deve ter apenas um motivo para mudar. Cada classe deve ter apenas uma responsabilidade ou função principal. Isso facilita a manutenção e a reutilização.
O – Open/Closed Principle (Princípio Aberto/Fechado) – Entidades de software devem estar abertas para extensão, mas fechadas para modificação. Poder adicionar funcionalidades a uma classe sem modificar o código existente.
L – Liskov Substitution Principle (Princípio da Substituição de Liskov) – Objetos de uma classe derivada devem poder substituir objetos da classe base sem alterar o funcionamento do programa. Se B
herda de A
, então B
deve poder ser usada no lugar de A
sem erros ou comportamento inesperado.
I – Interface Segregation Principle (Princípio da Segregação de Interfaces) – Nenhum cliente deve ser forçado a depender de métodos que não usa. Várias interfaces específicas ao invés de uma única interface geral e grande.
D – Dependency Inversion Principle (Princípio da Inversão de Dependência) – Dependa de abstrações, não de implementações. As classes devem depender de interfaces ou classes abstratas, e não de implementações concretas.