Software de Alta Qualidade 🏆
- Não basta funcionar; o código deve ser fácil de manter e evoluir.
O que são Design Patterns? ♟️
- Soluções reutilizáveis para problemas recorrentes no design de arquitetura.
Padrão Repository 🏛️
- Isolar a lógica de persistência de dados.
- O app não sabe se os dados vêm do SQL, Mongo ou Memória.
Implementando um Repository 🏗️
- Use Interfaces para definir o contrato.
interface IUserRepository {
save(user: User): Promise<void>;
}
Service Layer 🏗️
- Onde vive a Lógica de Negócio.
- Os serviços orquestram os repositórios.
Dependency Injection (DI) 💉
- Injetar dependências via construtor.
- Classes desacopladas e fáceis de testar.
Factory Pattern 🏭
- Centralizar a lógica de criação de objetos complexos.
class PaymentFactory {
static create(type: string): IPayment { ... }
}
Strategy Pattern 🎯
- Trocar algoritmos em tempo de execução.
- Ex: Diferentes formas de cálculo de desconto.
Singleton Pattern 🥇
- Garantir que uma classe tenha apenas uma instância (ex: Configuração, Database).
Observer Pattern 👁️
- Um objeto notifica outros sobre mudanças de estado.
Decorators em TypeScript 🎀
- Adicionar metadados ou comportamentos a classes e métodos de forma elegante (muito usado no NestJS).
Onde usar cada padrão? 🗺️
graph TD;
API[API/Routes] --> Service[Service Layer - Business Logic];
Service --> Repository[Repository Pattern - Data];
Service --> Factory[Factory - Object Creation];
Service --> Strategy[Strategy - Algorithms];
Vantagens dos Padrões 💎
- Linguagem comum entre desenvolvedores.
- Código mais organizado e previsível.
- Facilidade de expansão.
Composição sobre Herança 🧩
- Use padrões para compor comportamentos em vez de criar cadeias longas de classes pais.
Padrões no Frontend ⚛️
- Custom Hooks (são um tipo de Factory/Service).
- Render Props e HOCs (Padrão Decorator/Wrapper).
Dica: Não "Super-Arquitete" 🛑
- Use padrões apenas quando houver um problema real para resolver. Evite complexidade desnecessária.
Padrões de Criação, Estruturais e Comportamentais 📂
- As três grandes categorias do GoF (Gang of Four).
Resumo 🏁
- Repository e Service
- Injeção de Dependência
- Factory e Strategy
Próxima Aula: Clean Code e Arquitetura!
O refino final do seu código. 🚀
Perguntas? ❓