JavaScriptPOOavancado

Padrão Command

O padrão Command é usado em editores de texto, jogos e sistemas de transação para implementar desfazer/refazer. Em vez de chamar métodos diretamente, cada ação vira um objeto que sabe como executar e desfazer a si mesmo. Isso permite empilhar comandos em um histórico e reverter operações sem acoplar o editor a cada ação específica.

O PROBLEMA

Implemente Command pattern para editor de texto: Inserir, Deletar, Substituir com execute() e undo().

EXEMPLO

editor.executar(new Inserir("Olá"));
editor.executar(new Inserir(" Mundo"));
editor.texto → "Olá Mundo"
editor.desfazer();
editor.texto → "Olá"

SOBRE O CONCEITO

O padrão Command encapsula uma operação como um objeto com métodos execute() e undo(). Cada comando deve salvar o estado anterior do editor (ex.: o texto antes de inserir) dentro do próprio comando, no construtor ou no execute(). Erro comum: fazer undo() sem ter guardado esse estado, o que impossibilita reverter. Outro erro: não manter um histórico – você precisa de um array (history) onde cada comando executado é adicionado via push(). Ao desfazer, pop() do histórico e chama undo() no comando. Use class e extends para os comandos concretos, e o editor deve ter um método executar() que chama execute() no comando e o empilha.

RESOLUÇÃO

Mais exercícios de POO

JSP021 · AvançadoClasse LinkedListJSP005 · BásicoContador de instânciasJSP008 · Básicoinstanceof e verificação de tipoJSP009 · BásicoClasse abstrata simulada
Ver todos os exercícios de JavaScript