Alternativa D - Composite e Decorator
Análise da Questão
Esta questão aborda os Padrões de Projeto de Software (Design Patterns), especificamente padrões estruturais. O enunciado pede para identificar dois padrões que compartilham a mesma estrutura técnica, mas resolvem problemas diferentes.
Por que a Alternativa D é correta?
Os padrões Composite e Decorator são frequentemente citados na literatura clássica de padrões de projeto (como o livro do GoF - Gang of Four) por possuírem estruturas quase idênticas, mas intenções distintas.
- Estrutura Semelhante: Ambos utilizam composição para combinar objetos em tempo de execução. Eles operam sobre componentes comuns e mantêm a mesma interface pública para o cliente final.
- Propósito Distinto:
- Composite: Foca na organização de objetos em estruturas de árvore (hierarquias parte-todo). Permite tratar objetos individuais e composições de forma uniforme.
- Decorator: Foca no acréscimo dinâmico de responsabilidades ou funcionalidades a um objeto específico, sem alterar sua classe original.
| Característica | Padrão Composite | Padrão Decorator |
|---|
| Objetivo Principal | Criar hierarquias de partes e todo. | Adicionar comportamentos extras. |
| Estrutura | Árvore recursiva. | Encadeamento simples (wrapper). |
| Interface | Mantém a interface do componente. | Mantém a interface do componente. |
| Uso Comum | UI Components, File Systems. | Streams de I/O, Interfaces Gráficas. |
Por que as outras alternativas estão incorretas?
- Proxy e Adapter (A): O Proxy controla o acesso a um objeto, enquanto o Adapter converte a interface de uma classe para outra compatível com o cliente. Suas estruturas diferem quanto ao mapeamento de interfaces.
- Adapter e Composite (B): O Adapter foca na compatibilidade de interfaces, enquanto o Composite foca na estruturação hierárquica. Não são considerados estruturalmente equivalentes.
- Adapter e Decorator (C): O Adapter altera a interface vista pelo cliente (muda o contrato), já o Decorator preserva a interface original, apenas adicionando comportamento.
- Proxy e Composite (E): Embora ambos envolvam composição, o Proxy geralmente envolve um único objeto alvo com controle de acesso, enquanto o Composite lida com árvores de objetos.
Conclusão
A relação entre Composite e Decorator é o exemplo clássico de "mesma estrutura, propósito diferente" quando não se considera o par Proxy/Decorator (que também seria correto, mas não está nas opções). Ambos permitem estender a funcionalidade de objetos através de composição.
Portanto, a resposta correta é Alternativa D.