Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — FCC 2019
Arquitetura de Software›Padrões de projeto (Design Patterns)
Código
fc053688
Banca
FCC
Órgão
METRÔ-SP
Ano
2019
Cargo
Analista Desenvolvimento Gestão Júnior – Ciências da Computação
Considere os seguintes objetivos de padrões de projeto.1. Separa a construção de um objeto complexo da sua representação, de forma que o mesmo processo de construção possa criar diferentes representações, ou seja, serve para encapsular a construção de um produto e permitir que ele seja construído em etapas.2. Atribui responsabilidades adicionais a um objeto dinamicamente. Ele fornece uma alternativa flexível a subclasses para a extensão da funcionalidade, ou seja, envelopa um objeto para fornecer novos comportamentos.3. Usa compartilhamento para dar suporte a vários objetos de forma eficiente, ou seja, permite que uma instância de uma classe possa ser usada para fornecer muitas “instâncias virtuais”.4. Torna possível salvar o estado de um objeto de modo que o mesmo possa ser restaurado, ou seja, permite restaurar um objeto a um dos seus estados prévios, por exemplo, quando o usuário seleciona um “desfazer”.Correspondem, correta e respectivamente, aos objetivos de padrões de projeto:
AFactory Method, Decorator, Facade e Memento.
BAdapter, Mediator, Facade e Builder.
CBuilder, State, Mediator e Adapter.
DBuilder, Decorator, Flyweight e Memento.
EDecorator, Factory Method, Abstract Factory e State.
Revelar gabarito e comentário▾
GabaritoD — Builder, Decorator, Flyweight e Memento.
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 GoF – Builder, Decorator, Flyweight e Memento
Gabarito: letra D. A sequência correta é: 1. Builder, 2. Decorator, 3. Flyweight, 4. Memento, conforme as definições clássicas dos padrões GoF.
A questão exige o reconhecimento das descrições típicas de quatro padrões de projeto do catálogo GoF (Gang of Four). Vamos analisar cada objetivo e sua correspondência.
Análise item a item
1. "Separa a construção de um objeto complexo da sua representação... construído em etapas." ✅ Builder (padrão criacional). O Builder permite construir um objeto passo a passo, variando sua representação interna sem alterar o processo de construção.
2. "Atribui responsabilidades adicionais a um objeto dinamicamente... envelopa um objeto para fornecer novos comportamentos." ✅ Decorator (padrão estrutural). O Decorator adiciona funcionalidades a um objeto de forma flexível, sem modificar sua estrutura, através de uma cadeia de wrappers.
3. "Usa compartilhamento para dar suporte a vários objetos de forma eficiente... muitas instâncias virtuais." ✅ Flyweight (padrão estrutural). O Flyweight utiliza compartilhamento de objetos para suportar grandes quantidades de objetos de granularidade fina de maneira eficiente.
4. "Torna possível salvar o estado de um objeto... restaurar a um estado prévio, como desfazer." ✅ Memento (padrão comportamental). O Memento captura e externaliza o estado interno de um objeto sem violar o encapsulamento, permitindo restauração futura.
Alternativas
Item
Padrão de Projeto
Categoria (GoF)
Descrição
1
Builder
Criacional
Separa a construção de um objeto complexo da sua representação, permitindo que o mesmo processo de construção crie diferentes representações; constrói o objeto em etapas.
2
Decorator
Estrutural
Atribui responsabilidades adicionais a um objeto dinamicamente, fornecendo uma alternativa flexível a subclasses para extensão de funcionalidade; envelopa o objeto para adicionar novos comportamentos.
3
Flyweight
Estrutural
Usa compartilhamento para suportar vários objetos de forma eficiente, permitindo que uma instância seja usada para fornecer muitas “instâncias virtuais”.
4
Memento
Comportamental
Permite salvar e restaurar o estado de um objeto a um estado prévio, sem violar o encapsulamento; útil para funcionalidades como desfazer (undo).
Padrões GoF
1Criacionais
Builder
Separa construção da representação
Construção em etapas
2Estruturais
Decorator
Atribui responsabilidades dinamicamente
Alternativa flexível a subclasses
Flyweight
Compartilhamento eficiente
Muitas instâncias virtuais
3Comportamentais
Memento
Salva e restaura estado
Permite desfazer
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Factory Method (criacional) é usado para delegar a criação de objetos a subclasses, não para construção em etapas. Facade (estrutural) fornece uma interface simplificada, não compartilhamento de instâncias. Apenas Decorator e Memento estão corretos, mas 1 e 3 estão trocados.
Alternativa B — ❌ Incorreta
Adapter converte interfaces, não constrói objetos. Mediator coordena comunicação entre objetos, não adiciona responsabilidades. Facade não é sobre compartilhamento. Builder não é o quarto item. Nenhuma correspondência.
Alternativa C — ❌ Incorreta
State altera comportamento conforme estado, não adiciona responsabilidades. Mediator não é sobre compartilhamento. Adapter não é sobre restauração de estado. Apenas Builder está correta.
Alternativa D — ✅ Correta ⟵ GABARITO
Sequência exata: Builder, Decorator, Flyweight, Memento – todos correspondem perfeitamente às descrições.
Alternativa E — ❌ Incorreta
Decorator não é construção, Factory Method não é adição dinâmica de responsabilidades, Abstract Factory não é compartilhamento, State não é restauração de estado. Nenhum acerto.
PEGA ESSA DICA!
Para memorizar os padrões GoF, agrupe-os por categoria (criacionais: Builder, Factory Method, Abstract Factory, Prototype, Singleton; estruturais: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy; comportamentais: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor). Associe cada descrição típica ao nome: Builder → construção passo a passo; Decorator → embrulho para novos comportamentos; Flyweight → compartilhamento de objetos leves; Memento → snapshot para desfazer.