開発
Memento パターン
makuta
テキストエディタ等を使っているとき、必要なテキストを誤って削除した時にアンドゥ(やり直し)の機能を使えば、削除する前の状態にテキストを復元することができます。
オブジェクト指向のプログラムでアンドゥを行なうには、インスタンスのもっている情報を保存しておく必要があります。ただし、保存しておくだけでは駄目で、保存しておいた情報からインスタンスを元の状態に戻さなければなりません。
インスタンスを復元するためには、インスタンス内部の情報に自由にアクセス出来る必要があります。しかし、不用意にアクセスを許してしまうと、そのクラスの内部構造に依存したコードがプログラムのあちこちに散らばり、クラスの修正がしにくくなってしまいます。これをカプセルの破壊といいます。
インスタンスの状態を表す役割を導入して、カプセル化の破壊に陥ることなく保存と復元を行うのがMementoパターンです。Mementoとは「記念品」、「形見」といった意味です。
Mementoパターンを利用すると、
- undo(やり直し)
- redo(再実行)
- history(作業履歴の作成)
- snapshot(現在状態の保存)
などが行えるようになります。
Memetoパターンを使えば、ある時点でのインスタンスの状態を記録・保存しておき、後でインスタンスをその時点での状態に戻すことができます。