Ich habe über Erinnerungsmuster aus verschiedenen Quellen des Internets gelesen. Unterschiedliche Informationen aus verschiedenen Quellen haben mich verwirrt darüber, warum dieses Muster tatsächlich benötigt wird.
Die dofactory- Implementierung besagt, dass die Hauptabsicht dieses Musters darin besteht, den Zustand des Systems wiederherzustellen.
Wiki sagt, dass die primäre Absicht darin besteht , die Änderungen auf dem System wiederherstellen zu können . Dies hat eine andere Auswirkung: Es ist möglich, dass ein System eine Erinnerungsimplementierung hat, ohne dass eine Wiederherstellung erforderlich ist. Und diese Fähigkeit zur Wiederherstellung ist ein Merkmal davon.
OODesign sagt das
Manchmal ist es erforderlich, den internen Status eines Objekts zu einem bestimmten Zeitpunkt zu erfassen und das Objekt später wieder in diesen Status zu versetzen. Ein solcher Fall ist nützlich bei Fehlern oder Ausfällen.
Meine Frage ist also, warum genau wir diese verwenden. Ist es, um frühere Zustände zu retten - oder um die Kapselung zwischen dem Hausmeister und dem Memento zu fördern? Warum ist diese Art der Einkapselung so wichtig?
Bearbeiten: Für Besucher, überprüfen Sie diese Implementierung!
Bearbeiten : Ich arbeite an der Implementierung einer Erinnerungslösung für mein Problem. Ich werde eine weitere Frage dazu posten und diese Frage mit dieser verknüpfen. Vielen Dank für Ihre Antwort mit wertvollen Vorschlägen!
Edit 3 : Hier ist der Link zu meiner Beispielimplementierung
quelle
An sich wird das Erinnerungsmuster nur zum Erfassen und Speichern von Zuständen verwendet. Die Kapselung dient nur zum Schutz der Zustände vor dem Rest des Systems. Sobald ein Zustand erfasst wurde, muss er sorgfältig kontrolliert werden. Zum Beispiel ist es nicht sinnvoll, einen vorherigen Status nach dem Speichern ändern zu können (dies würde den Verlauf ändern), und es ist möglicherweise nicht sinnvoll, einfach zu einem vorherigen Status eines Objekts zurückzukehren, ohne andere zu beeinflussen (um dies zu verhindern) das System kann nicht vollständig ungültig werden).
Die häufigste Verwendung eines Memento, die ich gesehen habe, ist die Unterstützung der Rückgängig-Funktionalität. Es bezieht sich auch auf das Speichern von Wiederherstellungsfunktionen, indem Sie in der Zeit zurückgehen.
quelle
Alle diese Definitionen lenken Sie in die gleiche Richtung. Sie alle sagen, es gehe darum, etwas in seinen vorherigen Zustand zurückversetzen zu können. Das kann das gesamte System oder nur ein einzelnes Objekt sein.
Dieses Muster ist nützlich, wenn sich der Status eines Datensatzes im Laufe der Zeit ändert, Sie jedoch die geschäftliche Anforderung haben, ihn jederzeit in einen früheren Status zurückversetzen zu können. Oder alternativ, wenn Sie den Datensatz so anzeigen möchten, wie er zu einem früheren Zeitpunkt war. Diese Art von Anforderungen ist in vielen Arten von Systemen sehr verbreitet.
quelle