命令模式 
WYSIWYG editor toolbox 

cpp
struct Command {
  Command() = default;
  virtual ~Command() = default;
  
  // we may record prev state (or delta) to do "undo"
  virtual void execute() = 0;
  // use stored data to recover previous state
  virtual void undo() = 0;
};DB Transaction 
還需要紀錄,已作為 recover 時可以使用。