Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — FCC 2017
Arquitetura de Software›Padrões de projeto (Design Patterns)
Código
fc038469
Banca
FCC
Órgão
TRE-SP
Ano
2017
Nível
Médio
Cargo
Técnico Judiciário – Programação de Sistemas
Um Programador de Sistemas teve que desenvolver algumas aplicações utilizando padrões de projeto. Sua primeira necessidade foi utilizar um padrão para separar a construção de objetos complexos da sua representação, de forma que o mesmo processo de construção pudesse criar diferentes representações. A segunda necessidade foi o uso de um padrão para permitir que classes incompatíveis trabalhassem em conjunto, já que converte a interface de uma classe em outra, para atender às expectativas do cliente. Para atender suas necessidades, o Programador usou, correta e respectivamente, os padrões de projeto
AFactory Method e Singleton.
BBuilder e Abstract Factory.
CBuilder e Adapter.
DSingleton e Abstract Factory.
EAdapter e Bridge.
Revelar gabarito e comentário▾
GabaritoC — Builder e Adapter.
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: Builder e Adapter
Gabarito: letra C. A primeira necessidade descreve o padrão Builder, que separa a construção de um objeto complexo de sua representação, permitindo que o mesmo processo de construção crie diferentes representações. A segunda necessidade descreve o padrão Adapter, que converte a interface de uma classe em outra esperada pelo cliente, permitindo que classes incompatíveis trabalhem em conjunto.
A banca cobra a distinção entre os padrões criacionais, estruturais e comportamentais do GoF. O Builder é um padrão criacional (foca na construção passo a passo de objetos complexos), enquanto o Adapter é um padrão estrutural (foca na adaptação de interfaces).
Alternativa A — ❌ Incorreta
Factory Method também é um padrão criacional, mas seu objetivo é definir uma interface para criar um objeto, delegando às subclasses a decisão de qual classe instanciar – não separa construção de representação. Singleton garante uma única instância, não atende a nenhuma das necessidades.
Alternativa B — ❌ Incorreta
Builder está correto para a primeira necessidade, mas Abstract Factory é um padrão para criar famílias de objetos relacionados sem especificar suas classes concretas, não para adaptar interfaces de classes incompatíveis.
Alternativa C — ✅ Correta ⟵ GABARITO
Builder atende exatamente à primeira descrição: "separar a construção de objetos complexos da sua representação, de forma que o mesmo processo de construção possa criar diferentes representações". Adapter atende à segunda: "permitir que classes incompatíveis trabalhassem em conjunto, já que converte a interface de uma classe em outra, para atender às expectativas do cliente".
Alternativa D — ❌ Incorreta
Singleton (criação de instância única) e Abstract Factory não se encaixam em nenhuma das duas necessidades.
Alternativa E — ❌ Incorreta
Adapter está correto para a segunda necessidade, mas Bridge separa uma abstração de sua implementação para que ambas possam variar independentemente, não se aplica à primeira descrição (que é Builder).
NÃO CAIA NESSA!
A banca pode confundir Builder com Factory Method (ambos criacionais) ou Adapter com Bridge (ambos estruturais). Lembre-se: Builder constrói objetos complexos passo a passo; Adapter adapta interfaces existentes. Bridge desacopla abstração da implementação.