A respeito dos padrões de projeto Factory Method e Abstract ...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: C
Justificativa:
A alternativa C está correta ao afirmar que o padrão Factory Method "define uma interface para criar um objeto, mas deixa as subclasses decidirem qual classe a ser instanciada", enquanto o Abstract Factory "fornece uma interface para criação de famílias de objetos relacionados ou dependentes sem especificar suas classes concretas".
Vamos entender melhor esses conceitos:
Factory Method: é um padrão de projeto criacional que permite que uma classe delegue a criação de objetos a suas subclasses. Em outras palavras, a classe base define uma interface para criar um objeto, mas as subclasses decidem qual classe concreta será instanciada. Isso é útil para criar objetos de uma maneira flexível e controlar qual objeto será criado em tempo de execução.
Abstract Factory: também é um padrão de projeto criacional, mas com um propósito ligeiramente diferente. Ele fornece uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas. Isso é especialmente útil quando se precisa criar diversos objetos que funcionam juntos e cuja criação deve ser coordenada, garantindo que os objetos criados estejam em conformidade com uma determinada família de classes.
Análise das alternativas incorretas:
A - A afirmação está incorreta porque descreve o padrão Bridge, que "separa uma abstração da sua implementação, de modo que as duas possam variar independentemente". O padrão Abstract Factory não define uma interface para criar um objeto, mas sim para criar famílias de objetos relacionados.
B - A alternativa está errada porque descreve o padrão Iterator ao afirmar que "fornece uma maneira de acessar, sequencialmente, os elementos de uma agregação de objetos sem expor sua representação subjacente". Além disso, afirma que o Abstract Factory fornece uma interface unificada, o que é uma descrição mais próxima do padrão Facade. Nenhuma dessas descrições se aplica corretamente aos padrões Factory Method e Abstract Factory.
D - A afirmação está incorreta porque descreve o padrão Builder, que "separa a construção de um objeto complexo da sua representação, de modo que o mesmo processo de construção possa criar diferentes representações". Também menciona o padrão Chain of Responsibility, que "evita o acoplamento do remetente de uma solicitação ao seu destinatário". Ambos os conceitos estão desalinhados com os padrões descritos na questão.
Estudar padrões de projeto exige atenção aos detalhes de cada um, pois muitas vezes suas descrições podem ser confundidas. Recomendo revisar os conceitos principais de cada padrão e praticar com exemplos práticos para fixar melhor o conteúdo.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
A) conceitos de bridge e factory
B) conceitos de iterator e facade
C) correta
D) conceitos de build e chain of responsibility
A resposta correta é:
C) Factory Method define uma interface para criar um objeto, mas deixa as subclasses decidirem qual classe a ser instanciada, enquanto o Abstract Factory fornece uma interface para criação de famílias de objetos relacionados ou dependentes sem especificar suas classes concretas.
Vamos analisar as outras opções para esclarecer:
A) Factory Method separa uma abstração da sua implementação, de modo que as duas possam variar independentemente, enquanto o Abstract Factory define uma interface para criar um objeto, mas deixa as subclasses decidirem qual classe será instanciada.
- Esta opção mistura conceitos. O Factory Method realmente separa a criação de objetos, mas não necessariamente separa abstração da implementação. O Abstract Factory de fato define uma interface para criar famílias de objetos relacionados, mas não deixa subclasses decidirem qual classe será instanciada de forma direta.
B) Factory Method fornece uma maneira de acessar, sequencialmente, os elementos de uma agregação de objetos sem expor sua representação subjacente, enquanto o Abstract Factory fornece uma interface unificada para um conjunto de interfaces em um subsistema.
- Esta opção está incorreta. A descrição do Factory Method está incorreta, pois ele não se refere a acessar elementos sequencialmente de uma agregação de objetos. O Abstract Factory também não fornece uma interface unificada para um conjunto de interfaces em um subsistema.
D) Factory Method separa a construção de um objeto complexo da sua representação, de modo que o mesmo processo de construção possa criar diferentes representações, enquanto o Abstract Factory evita o acoplamento do remetente de uma solicitação ao seu destinatário, dando a mais de um objeto a chance de tratar a solicitação.
- Esta opção está incorreta nas definições. O Factory Method não se trata necessariamente de construção de objetos complexos, e o Abstract Factory não lida com acoplamento do remetente e destinatário de solicitações.
Portanto, a opção correta é a letra C, que descreve corretamente as responsabilidades e os propósitos de cada padrão de projeto.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo