package chess.controller; import chess.controller.event.GameListener; import chess.model.Game; public abstract class PlayerCommand extends Command{ public CommandResult undo(Game game, GameListener outputSystem) { CommandResult result = undoImpl(game, outputSystem); game.updateLastMove(); return result; } protected abstract CommandResult undoImpl(Game game, GameListener outputSystem); }