Pular para o conteúdo principal

Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — Unesc 2025

Arquitetura de SoftwarePadrões de projeto (Design Patterns)
Código
qg629978
Banca
Unesc
Órgão
FESPORTE
Ano
2025
Nível
Superior
Cargo
Analista de Informática
Um sistema de gerenciamento de tarefas precisa permitir que os usuários desfaçam ações realizadas, como a exclusão de uma tarefa ou a alteração de sua prioridade. Qual padrão de projeto é mais adequado para implementar essa funcionalidade de "desfazer"?
  1. ACommand.
  2. BFactory Method.
  3. CObserver.
  4. DSingleton.
  5. EStrategy.
Revelar gabarito e comentário

GabaritoA — Command.

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ão Command e funcionalidade "Desfazer"

Gabarito: letra A. O padrão Command é o mais adequado para implementar operações de desfazer (undo/redo), pois encapsula uma solicitação como um objeto, permitindo parametrizar clientes com filas, requisições e operações reversíveis. É o padrão consagrado pela literatura da Gangue dos Quatro (GoF) para esse fim.

A banca testa o conhecimento da finalidade de cada padrão GoF. A chave é lembrar que o Command permite armazenar o histórico de comandos executados e reverter cada um individualmente.

Padrão

Propósito Principal

Relação com "Desfazer" (Undo/Redo)

Adequação ao Problema

Command

Encapsular uma solicitação como um objeto, permitindo parametrizar clientes com filas, requisições e operações reversíveis.

Sim. Permite armazenar o histórico de comandos executados e reverter cada um individualmente através do método undo().

Mais adequado

Factory Method

Fornecer uma interface para criar objetos em uma superclasse, permitindo que subclasses alterem o tipo de objetos criados.

Não. É um padrão de criação, sem relação com controle de histórico ou reversão de ações.

❌ Inadequado

Observer

Definir uma dependência um-para-muitos entre objetos, de modo que quando um objeto muda de estado, todos os seus dependentes são notificados.

Não. Embora útil para eventos, não resolve o problema de desfazer operações.

❌ Inadequado

Singleton

Garantir que uma classe tenha apenas uma instância e fornecer um ponto global de acesso a ela.

Não. Não oferece mecanismo para armazenar ou reverter ações.

❌ Inadequado

Strategy

Definir uma família de algoritmos, encapsular cada um deles e torná-los intercambiáveis.

Não. Isoladamente não suporta undo; pode ser combinado com Command, mas não é a solução principal.

❌ Inadequado

1Command
Undo/redo
Fila de tarefas
Transações
2Memento
Captura e restaura estado
3Observer
Notificação de mudanças
4Strategy
Algoritmos intercambiáveis
Padrões GoF (comportamentais)
LEVELsoulevel.com.br
Padrões GoF (comportamentais): Command (Undo/redo, Fila de tarefas, Transações); Memento (Captura e restaura estado); Observer (Notificação de mudanças); Strategy (Algoritmos intercambiáveis)

Alternativa A — ✅ Correta ⟵ GABARITO

O padrão Command transforma uma requisição em um objeto independente que contém toda a informação necessária para executar ou desfazer a ação. Basta manter uma pilha de comandos executados; ao solicitar "desfazer", o último comando é retirado da pilha e seu método undo() é chamado. É a solução clássica para undo/redo.

Alternativa B — ❌ Incorreta

O Factory Method é um padrão de criação que fornece uma interface para criar objetos em uma superclasse, permitindo que subclasses alterem o tipo de objetos criados. Não tem relação com controle de histórico ou reversão de ações.

Alternativa C — ❌ Incorreta

O Observer é um padrão comportamental que define uma dependência um-para-muitos entre objetos, de modo que quando um objeto muda de estado, todos os seus dependentes são notificados. Embora útil para eventos, não resolve o problema de desfazer operações.

Alternativa D — ❌ Incorreta

O Singleton garante que uma classe tenha apenas uma instância e fornece um ponto global de acesso a ela. Não oferece mecanismo para armazenar ou reverter ações.

Alternativa E — ❌ Incorreta

O Strategy permite definir uma família de algoritmos, encapsular cada um deles e torná-los intercambiáveis. Embora possa ser combinado com Command, isoladamente não suporta undo.

PEGA ESSA DICA!

Para questões de padrões de projeto, associe cada padrão ao seu propósito principal: Command → undo/redo, fila de tarefas, transações; Memento → captura e restauração de estado interno; Observer → notificação de mudanças; Strategy → algoritmos intercambiáveis. Na dúvida, lembre-se que o Command é o padrão natural para operações reversíveis.

Link permanente: /questoes/qg629978