Alternativa D - Chain of Responsibility
Introdução
A questão descreve um dos padrões de comportamento mais comuns em Engenharia de Software, conhecido pela sua capacidade de distribuir tarefas entre diversos responsáveis. O enunciado utiliza termos técnicos fundamentais para identificar a solução correta.
Desenvolvimento
O padrão descrito possui três características principais explicitadas no texto:
- Lista encadeada de objetos: Os objetos são organizados sequencialmente, onde o primeiro recebe a requisição.
- Processamento ou Repasse: Cada elemento tem a autonomia de processar a tarefa ou passá-la para o próximo elo da corrente.
- Analogia com Exceções: A comparação com o tratamento de exceções (
try-catch) é a chave para entender a lógica de propagação até encontrar um objeto apto a resolver o problema.
Isso define formalmente o padrão Chain of Responsibility (Cadeia de Responsabilidade).
Análise
Para confirmar a resposta, analisamos as definições das demais alternativas:
- (A) Command: Padrão comportamental que transforma solicitações em objetos independentes. Ele encapsula um pedido, mas não necessariamente cria uma cadeia de propagação para resolução.
- (B) Mediator: Foca na redução do acoplamento entre objetos interagindo através de um objeto mediador central, evitando que eles se comuniquem diretamente.
- (C) Iterator: Padrão que permite iterar sobre elementos de uma coleção (como listas ou árvores) sem expor sua representação interna.
- (D) Chain of Responsibility: Permite que vários objetos tenham a chance de lidar com uma solicitação. A solicitação viaja pela cadeia até ser encontrada por um objeto capaz de tratá-la.
- (E) Visitor: Representa uma operação que será executada sobre os elementos de uma estrutura de objetos, permitindo adicionar novas operações sem modificar as classes existentes.
| Padrão | Foco Principal | Analogia Comum |
|---|
| Chain of Responsibility | Distribuição de responsabilidade | Tratamento de Exceções |
| Command | Encapsulamento de pedidos | Pedidos em restaurantes |
| Iterator | Acesso sequencial | Leitura de livro página por página |
| Mediator | Comunicação centralizada | Recepcionista de hotel |
Conclusão
O padrão que implementa uma lista encadeada onde a responsabilidade flui de um objeto para outro até ser resolvida é o Chain of Responsibility. Portanto, a alternativa correta é a D.