復習:Memento

今回はMementoパターンの復習です。

Mementoパターン
状態の保存を行うパターンです。
状態に必要な情報をインスタンスとして保存します。
また、そのインスタンスから元の状態に復帰する機能もつけます。
アンドゥ機能などを実装する際に役に立つパターンでしょう。
このパターンは以前のオブジェクトの状態の再現を目的としています。
このパターンでは現在の自分の状態を保存し、Mementoとして作成するOriginator
保存された状態を表現するMemento
Memento保存の要請を出したり、保存されたMementoをどこかに保持しておき、復帰の際にそれを渡すなどの処理を行うCaretakerの3種類の役があります。

広いインターフェースと狭いインターフェース
Memento役はOriginator役の情報を保存し、復帰できるようにしなくてはならないので、必然的にOriginator役の情報を全て持っています。
つまり、Originator役における隠蔽情報はMemento役に対しては、隠蔽されていません。
しかし、オブジェクト指向の考えに則るならば、Originator役の隠蔽情報はMemento役以外には隠蔽されなくてはなりません。
Memento役に対する情報隠蔽とMemento役以外に対する情報隠蔽の2種類を使い分ける必要があるわけです。