- Single Responsibility Principle
- Open/Closed Principle
- Liskov Substitution Principle
- Interface Segregation Principle
- Dependency Inversion Principle
- Cada classe/função tem uma responsabilidade única -Exemplo: tenho uma função que cria o feedback, a responsa dela é somente criar o feedback. Caso eu explique que uma função cria o feedback "E" envia email, ela já não tem responsabilidade unica;
- As classes devem ser abertas para extensão mas fechadas para modificação;
- Nós devemos poder substituir uma classe pai por uma herança dela e tudo continuar funcionando;
- ...;
- a classe não vai buscar as dependencias, as dependencias e entregam as coisas para a classe. a classe nem sabe direito o que ela esta fazendo com aquilo. e isso é bom para os testes, pois estes as vezes nao querem depender de terceiros ou de velocidade para fazer testes da aplicação.