Separa a aplicação em responsabilidades.
┌─────────────────────┐
│ Presentation / API │
├─────────────────────┤
│ Application / Service│
├─────────────────────┤
│ Domain / Business │
├─────────────────────┤
│ Infrastructure │
└─────────────────────┘É muito comum em aplicações Java, C#, Node.js e TypeScript.
Um exemplo seria:
Controller
↓
Service
↓
Repository
↓
DatabaseVantagens:
- Fácil de entender
- Boa separação de responsabilidades
- Muito conhecida no mercado
Desvantagens:
- Pode criar dependências fortes entre camadas
- Pode virar uma arquitetura "anêmica" se mal utilizada