p.303, line.3-4 カプセル化を破壊せずに、オブジェクトの内部状態を据えて外面化しておき、オブジェクトを後にこの状態に戻すことができるようにする。

p.307,line.8-10 4.narrowインターフェイスとwideインターフェイスを定義する。言語によっては、OriginatorオブジェクトだけがMementoオブジェクトの状態にアクセスできるようにするのは難しいかもしれない。
p.307 「Memento クラスには 2つのインタフェースがある。すなわち、Originator オブジェクトのための wide インタフェースと、他のオブジェクトのための narrow インタフェースである。」
p.287, line.5-6, Mementos have two interfaces: a wide one for originators and a narrow one for other objects.
名前空間分離によって解決できる。
OriginatorオブジェクトだけがMementoオブジェクトの状態にアクセスできるようになる。

module m {
define class Originator {
define abstract void setMemento(Memento m);
define abstract Memento createMemento();
}
define class Memento {}
}
module m.implementation extends m {
class Originator {
int state;
void setMemento(Memento m) {...}
Memento createMemento() {...}
}
class Memento {
int state;
}
}