Mementoパターン

Memento(記念品、形見、思い出の種)を大事にとっておきましょうパターン。導入部分の「インスタンスの状態を保存しておいて、あとでその時点に戻してやる」のところで、ああ、Prototypeパターン来たな、と思った。別にクローン作ってるわけじゃあなかったけど、まったくハズレでもなかった。発想は少しずつ広がってきた気がする。
ポイントは、インスタンスのスナップショットを取っておくには、インスタンス内部の情報を得る必要がある。しかし不用意なアクセスを許すことはカプセル化に反する。そこで広いAPIと狭いAPIを用意して、中身を覗いてスナップショットを作る人とそれをブラックボックスとして保存する人に役割分担する、ということ。
誰々は広いAPIを使えて誰々は狭いAPIしか使えない、といったあたりはパッケージとpublicからprivateまでアクセス修飾子を使い分けて実現する。このあたりは普段なかなか意識しない話なのであとでもう一回見ておく必要ありっぽい。あと、サンプルではUndoやRedoを実現する例が扱われていて、これはなるほど使える場面もあるかなぁと。