Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — Unesc 2025
- Código
- qg629978
- Banca
- Unesc
- Órgão
- FESPORTE
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista de Informática
- ACommand.
- BFactory Method.
- CObserver.
- DSingleton.
- EStrategy.
GabaritoA — Command.
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 | ✅ 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 |
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.
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.
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.
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.
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.
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