18.5. Registry
Objeto bem conhecido para achar serviços e objetos comuns.
Resumo
- Objeto bem conhecido que outros usam para encontrar serviços e objetos comuns.
- Interface por métodos estáticos (
Registry.unitOfWork()), mas dados em instância para trocar em testes. - Escopo: processo, thread (thread-local) ou sessão. Ex.: Unit of Work por thread.
- Fowler o trata como último recurso: é um 'global' disfarçado. Prefira passar por parâmetro.
- Torne-o substituível (registry de teste) para não prejudicar os testes.
Perguntas-chave
responda de cabeça, depois abraPor que Registry é último recurso?
Funciona como dado global, escondendo dependências e dificultando testes.
Qual o escopo de um Registry de Unit of Work?
Normalmente por thread ou sessão, não por processo.
Como manter testabilidade?
Métodos estáticos delegam a uma instância que pode ser trocada por uma versão de teste.
Exercícios de fixação
0/5 respondidas1.
Registry.unitOfWork() devolve o Unit of Work da thread atual. Qual padrão base?2.
Como Fowler vê o uso de Registry?
3.
Por que um Registry de Unit of Work costuma ser thread-scoped?
4.
Como manter um Registry testável?
5.
Qual o principal problema de design do Registry?