📊 Capítulo 10: Interfaces & Inversão de Controle
Especialização em Sistemas com Java
🗺️ O Princípio da Inversão de Dependência (DIP do SOLID)
flowchart TD
SERVICE["ServicoAluguel (Módulo de Alto Nível)"]
--> |"Depende exclusivamente do Contrato!"| INTERFACE["interface ServicoImposto {\n double imposto(double montante);\n}"]
INTERFACE <--> |"implements"| IMPL1["ServicoImpostoBrasil (Regras da Receita Federal)"]
INTERFACE <--> |"implements"| IMPL2["ServicoImpostoEUA (Regras do IRS)"]
style SERVICE fill:#ede7f6,stroke:#512da8,stroke-width:2px
style INTERFACE fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style IMPL1 fill:#e8f5e9,stroke:#4caf50,stroke-width:1.5px
style IMPL2 fill:#e1f5fe,stroke:#03a9f4,stroke-width:1.5px
🎯 Slide 1: Por Que Usar Interfaces?
-
Permite definir o que deve ser feito sem ditar como será feito.
- Permite desacoplar completamente serviços de regras específicas, viabilizando mocks e testes unitários simples!
🎯 Slide 2: Default Methods e Static Methods
public interface Repositorio<T> {
void salvar(T entidade);
Optional<T> buscarPorId(Long id);
// Método default com implementação padrão:
default boolean existe(Long id) {
return buscarPorId(id).isPresent();
}
}
🎯 Slide 3: Comparable<T> e Comparator<T>
-
Comparable<T>: Define a ordem natural intrínseca de uma classe (compareTo). Comparator<T>: Permite criar critérios de ordenação externos dinâmicos (ex.: ordenar funcionários por salário decrescente ou por data de admissão).
🔗 Navegação do Capítulo 10
| 📖 Ler Conteúdo Completo | 🧠 Fazer Quiz | 💻 Ver Exemplos | 🧩 Exercícios |
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim