Wofür ist die „Memento“ -Klasse im Memento-Designmuster?

8

Im "Memento" -Designmuster der Gang of Four Mementosieht die Klasse aus wie ein nutzloser Wrapper, der mir eigentlich keinen Wert bietet.

Wofür ist das? Gibt es einen Grund, warum Sie das StringObjekt nicht einfach weitergeben können (im Wikipedia-Beispiel)?

Jonas H.
quelle

Antworten:

11

Die Memento-Klasse enthält die verschiedenen Zustände, mit denen Sie sich in Ihrem Objekt befassen. Sie aktiviert die Funktion "Rückgängig / Wiederherstellen".

Das Beispiel, mit dem Sie auf Wikipedia verlinkt haben, ist ziemlich simpel, wobei der "Status" nur ein Zeichenfolgenwert ist. Bedenken Sie, dass der Status eine Reihe von Eigenschaften sein kann, die Sie möglicherweise in "Batch" wiederherstellen möchten und mit denen Sie möglicherweise mehrere "Rückgängig" -Punkte haben.

Oded
quelle
4
Beachten Sie auch, dass die Verwendung .clone()in diesem Wikipedia-Beispiel eine äußerst schlechte Praxis ist. Es wird niemals so funktionieren, wie Sie es möchten, besonders in diesem Muster. Wer dieses Beispiel geschrieben hat, muss sich die Tastatur abnehmen lassen.
Das Erinnerungsobjekt im Erinnerungsmuster "Vanille" wird lediglich verwendet, um "Rückgängig" zu aktivieren. Das Wikipedia-Beispiel (das wirklich nicht so schlecht ist, IMO) scheint dies zu bestätigen ...
Vaughandroid