まったく、現代っ子は Ctrl + Z があって当たり前だと思ってるんだから。
Memento という英単語は馴染みのない方も多いかもしれませんが、これ意味としては、「思い出の品」です。事実そのものは後に残せなくても、記念品があれば代わりになる、みたいな感じ。
リバーシやってて、気づくのが遅れたら 1 手戻しただけじゃ勝ち目ないような状況に追い込まれてたなんて、よくある話ですね。ぜんぶの手を記録しておけば、1 手戻しでは勝てないなら 2 手 3 手戻して... と、スマホのカメラをアンドゥスタックとして使えば、いつか必ず勝てます。
リバーシの盤面は originator と呼ばれます。リアルな事象であり、アンドゥ機能以外は、それ単体で完全に成立する系です。
めもりーちゃん(のスマホ)の部分は caretaker です。適切なタイミングで写真を撮ってる、状況のお世話をする役です。
お世話の結果何ができるかというと、複数の memento である写真のスタックができます。写真は実際の物理盤面よりはるかに軽量なオブジェクトだというのがポイントです。そうでないと、いくらでもアンドゥできるほど大量には保存できませんから。
originator には普段使わない一括書き戻しメソッドがあります。それは caretaker に対してのみ、アクセスが公開されているのが望ましいでしょう。他の誰かが、過去実在しなかった状態に改ざんできてしまうのは危険ですから。
デスクトップ GUI のアンドゥ専用か関係ないなと思う方もいるかもしれませんが、最近は Web のユーザーインターフェースも、本当にやりますか確認から、即実行して間違っていたら「戻す」でキャンセルできるものも増えてきました。
それにみなさん、いつもメメントにお世話になってるじゃないですか。Git でいえばこれ、ワークスペースとリポジトリとコミットの関係ですよね。デザインパターンみたいだなと認識しておいて、損はないと思いますよ。