Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — CESPE / CEBRASPE 2024
Arquitetura de Software›Padrõ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
AFactory Method.
BTemplate Method.
CAbstract Factory.
DChain of Responsibility.
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.
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