Alternativa B
Introdução
A questão aborda a relação entre a estrutura das coleções em Java e os Padrões de Projeto (Design Patterns). Embora o conceito principal de percorrer elementos seja o Padrão Iterator, este não está listado nas opções. Portanto, devemos analisar como esses objetos são criados e obtidos através da interface.
Desenvolvimento
No contexto dos padrões de criação de objetos, a forma como os iteradores são gerados segue o princípio do Factory Method.
Por que Factory Method?
O Factory Method é um padrão criacional que define uma interface para criar um objeto, mas deixa que as subclasses decidam qual classe instanciar. Na API do Java Collections:
- A interface
Collection declara o método iterator(). - Cada classe concreta (como
ArrayList, LinkedList, HashSet) implementa esse método. - Cada implementação retorna um tipo específico de iterador (ex:
ArrayList$Itr, HashMap$NodeIterator).
Isso permite que o código cliente chame collection.iterator() sem saber a classe exata do iterador sendo retornada, desacoplando a lógica de criação da lógica de uso.
Por que não os outros padrões?
| Padrão | Motivo da Exclusão |
|---|
| Abstract Factory | Gera famílias de objetos relacionados. Não se aplica à criação simples de um iterador. |
| Singleton | Garante uma única instância global. Iteradores podem ter múltiplas instâncias. |
| Prototype | Baseia-se na clonagem de objetos existentes. Não é o mecanismo padrão de obtenção. |
| Builder | Usado para construir objetos complexos passo a passo. Não é relevante aqui. |
Conclusão
Embora a funcionalidade de travessia utilize o conceito do Padrão Iterator, o mecanismo de obtenção e implementação polimórfica desse objeto através da interface Collection é tecnicamente descrito pelo Factory Method.
Portanto, a alternativa correta é a B.