Mementoデザインパターンの「Memento」クラスは何ですか?


8

ギャングオブフォーの「メメント」デザインパターンでは、Mementoクラスは実際には私に値を提供しない役に立たないラッパーのように見えます。

それはなんのためですか?String(ウィキペディアの例のように)オブジェクトを単に渡すことができない理由はありますか?

回答:


11

mementoクラスは、オブジェクトで処理しているさまざまな状態を保持するクラスです。これにより、「取り消し/やり直し」機能が有効になります。

ウィキペディアでリンクした例はかなり単純化されており、「状態」は単なる文字列値です。状態は、 "バッチ"で復元する必要のある一連のプロパティであり、おそらくいくつかの "元に戻す"ポイントがある可能性があることを考慮してください。


4
また.clone()、ウィキペディアの例でのの使用は非常に悪い習慣であることにも注意してください。特にこのパターンでは、期待どおりに機能しません。その例を書いた人は誰でも、キーボードを取り去る必要があります。

「バニラ」記念品パターンの記念品オブジェクトは、「取り消し」を有効にするために純粋に使用されます。ウィキペディアの例(実際にはそれほど悪いIMOではありません)はこれを
裏付け
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.