18.8. Special Case
Subclasse com comportamento padrão para casos especiais (ex.: Null Object).
Resumo
- Subclasse que dá comportamento especial para casos particulares, em vez de retornar null.
- Ex.:
ClienteDesconhecido,ClienteFaltando: respondem com valores padrão seguros. - Elimina verificações
if (x == null)espalhadas; o polimorfismo trata o caso. - Null Object é um Special Case. Pode haver vários (desconhecido, ausente, inválido).
- Ex. numérico: NaN e infinito do IEEE 754 são casos especiais.
Perguntas-chave
responda de cabeça, depois abraQue problema o Special Case resolve?
Verificações de nulo e de casos especiais repetidas por todo o código.
Qual a relação com Null Object?
Null Object é um tipo de Special Case.
Pode haver mais de um Special Case por classe?
Sim, ex.: cliente desconhecido e cliente ausente com comportamentos diferentes.
Exercícios de fixação
0/5 respondidas1.
Uma busca retorna
ClienteDesconhecido (subclasse de Cliente) com nome 'Ocupante' e plano 'básico' em vez de null. Qual padrão?2.
Qual benefício principal do Special Case?
3.
Null Object é:
4.
O código tem
if (cliente == null) nome = "Ocupante" em 40 lugares. Que refatoração aplica o padrão?5.
Qual exemplo numérico Fowler cita como Special Case?