Memento — capture and restore state.
Implementation:
1public class Memento2{3 public string State { get; }4 public Memento(string state) => State = state;5}67public class Originator8{9 public string State { get; set; }10 public Memento Save() => new(State);11 public void Restore(Memento m) => State = m.State;12}1314public class Caretaker15{16 private readonly Stack<Memento> _history = new();17 public void Save(Originator o) => _history.Push(o.Save());18 public void Undo(Originator o) => o.Restore(_history.Pop());19}
Key: Memento for undo/redo.