Pular para o conteúdo principal

Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — CESPE / CEBRASPE 2024

Arquitetura de SoftwarePadrões de projeto (Design Patterns)
Código
ce175137
Banca
CESPE / CEBRASPE
Órgão
ITAIPU BINACIONAL
Ano
2024
Nível
Superior
Cargo
Profissional de Nível Universitário Júnior - Função: Analista de Sistemas
O padrão de projeto que permite definir uma interface para criar objetos, mas deixa as subclasses decidirem a classe a ser instanciada, adiando a instanciação para cada subclasse, é o
  1. AFactory Method.
  2. BTemplate Method.
  3. CAbstract Factory.
  4. DChain of Responsibility.
  5. EFacade.
Revelar gabarito e comentário

GabaritoA — Factory Method.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Factory Method

Gabarito: letra A. O Factory Method é o padrão criacional que define uma interface (método fábrica) para criar objetos, mas delega às subclasses a decisão sobre qual classe concreta instanciar, adiando a instanciação para cada subclasse. Essa definição corresponde exatamente ao enunciado.

A banca cobra a definição clássica do GoF (Gang of Four). O Factory Method permite que uma classe adie a criação de objetos para suas subclasses, encapsulando a lógica de instanciação e promovendo baixo acoplamento.

1Factory Method
Interface para criar objetos
Subclasses decidem a classe
Adia instanciação
2Abstract Factory
Cria famílias de objetos
Não delega a subclasses isoladas
3Outros padrões
Template Method (comportamental)
Chain of Responsibility (comportamental)
Facade (estrutural)
Padrões criacionais (GoF)
LEVELsoulevel.com.br
Padrões criacionais (GoF): Factory Method (Interface para criar objetos, Subclasses decidem a classe, Adia instanciação); Abstract Factory (Cria famílias de objetos, Não delega a subclasses isoladas); Outros padrões (Template Method (comportamental), Chain of Responsibility (comportamental), Facade (estrutural))

Alternativa A — ✅ Correta ⟵ GABARITO

O padrão Factory Method resolve exatamente o problema descrito: "definir uma interface para criar objetos, mas deixar as subclasses decidirem a classe a ser instanciada". Ele encapsula a criação em um método (factory method) que as subclasses implementam para produzir objetos concretos. O Product é definido como interface ou classe abstrata, e o Creator declara o factory method que retorna um Product, enquanto os ConcreteCreators sobrescrevem esse método para retornar ConcreteProducts específicos.

Alternativa B — ❌ Incorreta

O Template Method define o esqueleto de um algoritmo em uma operação, postergando a definição de alguns passos para as subclasses. Não se trata de criação de objetos, mas sim da estrutura de um algoritmo comportamental.

Alternativa C — ❌ Incorreta

O Abstract Factory fornece uma interface para criar famílias de objetos relacionados ou dependentes, sem especificar suas classes concretas. Embora também seja criacional, ele não deixa a instanciação para subclasses individuais — geralmente é implementado com Factory Methods, mas seu propósito é diferente (criação de famílias de objetos, não delegação da escolha de classe a subclasses isoladas).

Alternativa D — ❌ Incorreta

O Chain of Responsibility é um padrão comportamental que evita o acoplamento do remetente ao receptor, dando a mais de um objeto a oportunidade de tratar uma requisição. Nada relacionado à criação de objetos.

Alternativa E — ❌ Incorreta

O Facade é um padrão estrutural que fornece uma interface simplificada para um subsistema complexo. Também não tem relação com criação de objetos ou herança.


Tabela comparativa dos principais padrões confundidos com Factory Method:

Critério

Factory Method

Abstract Factory

Template Method

Categoria

Criacional

Criacional

Comportamental

Propósito

Define um método para criar objetos, subclasses decidem qual classe

Cria famílias de objetos relacionados

Define o esqueleto de um algoritmo, subclasses redefinem passos

Como adia

Adia a instanciação para subclasses através de herança

Adia a criação para fábricas concretas (geralmente usando composição)

Adia a implementação de partes do algoritmo para subclasses

Retorno

Um objeto de um tipo Product

Vários objetos de diferentes tipos (família)

Geralmente void (executa passos)

Gabarito: letra A.

Link permanente: /questoes/ce175137