Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — FCC 2016
Arquitetura de Software›Padrões de projeto (Design Patterns)
Código
fc033352
Banca
FCC
Órgão
TRT - 14ª Região (RO e AC)
Ano
2016
Nível
Superior
Cargo
Analista Judiciário - Tecnologia da Informação
Um Analista precisa construir uma aplicação que possui uma função da qual se conhece somente o algoritmo de execução, sendo que o trabalho de codificação para realização da operação desta função tem que ser postergado. Ele optou pelo uso do padrão de projeto comportamental
ATemplate Method, que permite implementar as partes invariantes de um algoritmo e deixar para subclasses a implementação da parte variante.
BAdapter, que cria classes reutilizáveis que cooperam com classes não relacionadas ou não previstas.
CSingleton, que possibilita o uso de uma instância estendida sem alterar o seu código.
DAbstract Factory, que permite criar uma biblioteca de classes de produtos e revelar somente suas interfaces, não suas implementações.
EFactory Method, que define uma interface para criar objetos, mas deixa que as subclasses decidam que classe instanciar.
Revelar gabarito e comentário▾
GabaritoA — Template Method, que permite implementar as partes invariantes de um algoritmo e deixar para subclasses a implementação da parte variante.
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”.
Padrões de Projeto Comportamentais: Template Method
Gabarito: letra A. O padrão Template Method é comportamental e define o esqueleto de um algoritmo, permitindo que subclasses implementem partes específicas sem alterar a estrutura geral. O enunciado descreve exatamente isso: conhece-se o algoritmo de execução, mas a codificação da operação deve ser postergada para que subclasses completem os detalhes variantes.
A banca testa o conhecimento da classificação dos padrões (comportamental, criacional, estrutural) e a finalidade de cada um. É essencial saber identificar o Template Method entre os demais.
Padrão
Classificação (GoF)
Descrição principal
Aplicação ao enunciado
Template Method
Comportamental
Define o esqueleto de um algoritmo, postergando a implementação de partes variantes para subclasses.
✅ Correta. Atende exatamente ao requisito de postergar a codificação da operação conhecendo apenas o algoritmo geral.
Adapter
Estrutural
Permite que classes com interfaces incompatíveis cooperem, convertendo uma interface em outra esperada pelo cliente.
❌ Incorreta. É estrutural e não resolve o problema de postergar implementação de algoritmo.
Singleton
Criacional
Garante que uma classe tenha apenas uma instância e fornece um ponto global de acesso a ela.
❌ Incorreta. É criacional e não se relaciona com a estrutura de um algoritmo.
Abstract Factory
Criacional
Fornece uma interface para criar famílias de objetos relacionados sem especificar suas classes concretas.
❌ Incorreta. É criacional e foca na criação de objetos, não na definição de algoritmos.
Factory Method
Criacional
Define uma interface para criar um objeto, mas permite que subclasses decidam qual classe instanciar.
❌ Incorreta. É criacional e trata da instanciação de objetos, não da estrutura de um algoritmo.
Padrões de projeto
1Comportamentais
Template Method
Esqueleto do algoritmo
Subclasses implementam partes variantes
Strategy
Observer
2Estruturais
Adapter
Decorator
3Criacionais
Singleton
Abstract Factory
Factory Method
LEVEL · soulevel.com.br
Alternativa A — ✅ Correta ⟵ GABARITO
A definição apresentada corresponde perfeitamente ao Template Method: "implementar as partes invariantes de um algoritmo e deixar para subclasses a implementação da parte variante". Este padrão é comportamental e atende ao requisito de postergar o trabalho de codificação da operação.
Alternativa B — ❌ Incorreta
Adapter é um padrão estrutural, não comportamental. Seu objetivo é compatibilizar interfaces de classes não relacionadas, permitindo que cooperem sem modificar seu código. A descrição "cria classes reutilizáveis que cooperam com classes não relacionadas ou não previstas" é correta para o Adapter, mas não se aplica ao problema do enunciado, que pede um padrão comportamental para postergar implementação de algoritmo.
Alternativa C — ❌ Incorreta
Singleton é um padrão criacional, não comportamental. Garante que uma classe tenha apenas uma instância e fornece um ponto global de acesso a ela. A frase "possibilita o uso de uma instância estendida sem alterar o seu código" não descreve com precisão o Singleton e, além disso, não resolve o problema de postergar a implementação de um algoritmo.
Alternativa D — ❌ Incorreta
Abstract Factory é um padrão criacional que fornece uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas. Ele revela apenas as interfaces, não as implementações. Embora seja útil para postergar a escolha de implementações, é voltado para criação de objetos, e não para a estrutura de um algoritmo. O enunciado pede um padrão comportamental para uma função cujo algoritmo já é conhecido — Abstract Factory não se encaixa.
Alternativa E — ❌ Incorreta
Factory Method é um padrão criacional, apesar de também usar o conceito de postergar decisões para subclasses (de que classe instanciar). A definição apresentada está correta: "define uma interface para criar objetos, mas deixa que as subclasses decidam que classe instanciar". No entanto, o enunciado fala de uma função com algoritmo conhecido, cuja codificação da operação precisa ser postergada — isso remete a comportamento (como o algoritmo é executado), não à criação de objetos. O padrão correto é o Template Method, que posterga partes do algoritmo, não a criação de objetos.
NÃO CAIA NESSA!
A banca explora a semelhança entre Factory Method e Template Method: ambos delegam a subclasses a decisão sobre detalhes de implementação. A diferença crucial é que o Template Method é comportamental (foca no fluxo do algoritmo) e o Factory Method é criacional (foca na criação de objetos). O enunciado menciona "função da qual se conhece somente o algoritmo de execução" — isso é a essência do Template Method.
NÃO CAIA NESSA!
Para não confundir, lembre-se: Template Method = algoritmo (comportamento); Factory Method = criação de objetos. Ambos usam herança para postergar decisões, mas o domínio é diferente.