Command — encapsulate action.
Implementation:
1public interface ICommand2{3 void Execute();4 void Undo();5}67public class MoveCommand : ICommand8{9 private readonly Editor _editor;10 private readonly Position _delta;11 private Position _previous;1213 public void Execute()14 {15 _previous = _editor.Position;16 _editor.Move(_delta);17 }1819 public void Undo() => _editor.Position = _previous;20}
Key: Command for undo/redo.