1. Definition
Erfassen Sie ohne die Kapselung den internen Zustand eines Objekts und speichern Sie diesen Zustand außerhalb des Objekts. Auf diese Weise kann das Objekt später in seinen ursprünglichen gespeicherten Zustand wiederhergestellt werden.
2. Gründe für den Gebrauch
Möchten Sie den ursprünglichen Zustand des Objekts irgendwann wiederherstellen.
3. Beispiele für anwendbare Situationen
Es gibt viele Anwendungen des Memo -Modus, aber wir haben es gesehen, aber wir haben nicht sorgfältig darüber nachgedacht. Dies ist nur die Verwendung des Memo -Modus. Lassen Sie mich Ihnen ein paar Beispiele geben:
EG1. Verwendung von Memos in JSP+JavaBean:
Wenn Sie ein Konto in ein System hinzufügen, müssen Sie den Benutzernamen, das Kennwort, die Kontaktnummer, die Adresse und andere Informationen im Formular eingeben. Wenn einige Felder nicht ausgefüllt oder falsch ausgefüllt werden, müssen Sie die vom Benutzer auf der neuen Seite eingegebenen Optionen speichern und die falschen Optionen fordern. Dies wird unter Verwendung der Eigenschaften von Javabäen mit den Eigenschaften von Javabäen erreicht, dh es wird im Memo -Modus erreicht.
EG2. Bei der Reparatur der Autosbremsen. Entfernen Sie zuerst die Leitbleche auf beiden Seiten, um die linken und rechten Bremsbeläge freizulegen. Nur ein Stück kann entfernt werden, und das andere Stück dient als Memo, um anzuzeigen, wie die Bremse installiert ist. Erst nach Abschluss der Reparatur dieses Stücks kann ein weiteres Stück entfernt werden. Wenn das zweite Stück entfernt wird, wird das erste Stück zu einem Memo.
EG3. Es wird gesagt, dass es keine Bedauerungsmedizin gibt, um im Leben zu kaufen. Wir alle zahlen den Preis für das, was wir tun, aber in der weichen Welt gibt es "Bedauern Medizin". Nachdem ich bestimmte Zustände von etwas geändert habe, solange wir bestimmte Zustände des Dings zuvor retten, können wir den Zustand des Dings durch den Memo -Modus wiederherstellen. Tatsächlich ist dies auch eine "Moonlight Treasure Box", die die Zeit zurückdrehen kann, und das Wort "Magie" ist erstaunlich.
4. Klassendiagrammstruktur und Beschreibung
(1) Das Klassendiagramm lautet wie folgt:
(2) Klasse Beschreibung (i) Memento: Memorandum -Rolle, die Hauptarbeit ist wie folgt:
Speichern Sie den internen Zustand des Initiatorobjekts;
Es kann seinen Inhalt vor einem anderen Objekt als dem Originator -Objekt vor gelesen werden.
(ii) Urheber: Die Rolle des Sponsors erledigt hauptsächlich die folgenden Aufgaben:
Erstellen Sie ein Memoobjekt mit dem aktuellen internen Zustand;
Verwenden Sie das Memo -Objekt, um seinen internen Zustand zu speichern.
(iii) Hausmeister: Die verantwortliche Person ist wie folgt abgeschlossen:
Verantwortlich für die Erhaltung von Memorandum -Objekten;
Der Inhalt des Memoobjekts wird nicht gespeichert.
5. Beispiel
/ *** Datenobjekt*/ öffentliche Klassendatenspeicher {private String -Aktion; public void setAction (String -Aktion) {this.action = action; } public String getAction () {return action; }} /*** Ein Objekt, das die Kopie des internen Zustands eines anderen Objekts speichert. Auf diese Weise kann das Objekt in Zukunft in den ursprünglichen gespeicherten Staat wiederhergestellt werden. */ import Java.io.file; importieren java.io.serializable; öffentliche Klasse Memento implementiert serialisierbare { /*private int -Nummer; private Dateidatei = null; public memento (Urheber O) {this.number = o.getNumber (); this.file = o.getFile (); } public int getNumber () {return this.number; } public void setNumber (int nummer) {this.number = number; } öffentliche Datei getFile () {return this.file; } public void setFile (Dateidatei) {this.File = Datei; } */ privater Datenspeicherstatus; public memento (Urheber O) {this.state = o.getState (); } public dataState getState () {return state; } public void setState (DataState Status) {this.state = STAAT; }} Urheber der öffentlichen Klasse { /* private int nummer; private Dateidatei = null; öffentlicher Originator () {} // Erstellen Sie ein Memento und geben Sie es als Parameter öffentlichem memento getMemento () {return New memento (this); } // Die gespeicherten Daten von Memento herausnehmen und in ihren ursprünglichen staatlichen öffentlichen void setMemento (memento m) {number = m.getNumber (); Datei = M.GetFile (); } public int getNumber () {Rückgabenummer; } public void setNumber (int nummer) {this.number = number; } öffentliche Datei getFile () {Rückgabedatei; } public void setFile (Dateidatei) {this.File = Datei; }*/ privater Datenspeicherstatus; public originator () {} public originator (DataState State) {this.state = STAAT; } // Erstellen Sie ein Memento und geben Sie es als Parameter Public Memento getMemento () in öffentliches Memento weiter. } // Nehmen Sie die gespeicherten Daten von Memento aus und stellen Sie sie in seinen ursprünglichen staatlichen öffentlichen void setMemento (memento m) { / * * Das von GetMemento () erstellte Objekt wird in einem Container gespeichert. * Wenn es wiederhergestellt werden muss, geben Sie sie in die aktuelle Methode ein und verwenden Sie dann GetState (), um */ this.state = M.GetState () zu erhalten; } public dataState getState () {return state; } public void setState (DataState Status) {this.state = STAAT; }} /** Der Urheber wird verwendet, um Daten zu laden, Memento -Objekte zu erstellen und die Originaldaten über den Memento*/ public Class Test wiederherzustellen {public static void main (String [] args) {// Urheberer originator = new Originator (); // Originator.SetNumber (8); // // memento memento = Originator.getMemento (); // system.out.println (memento.getNumber ()); DataState state = new DataState (); state.setAction ("Ein Zeichen kopieren"); Originator Originator = neuer Originator (); System.out.println ("Originaldaten erstellen"); Originator.SetState (Zustand); System.out.println ("Memorandum -Objekt erstellen, Original -Datenzustand speichern"); Memento memento = originator.getMemento (); System.out.println ("neue Daten erstellen"); Originator.SetState (New DataState ()); System.out.println ("Nach dem Erstellen neuer Daten:" + originator.getState (). GetAction ()); /** memento muss an einem bestimmten Ort gespeichert und bei Bedarf abgerufen werden, um die darin gespeicherten Daten wiederherzustellen*/ system.out.println ("die Originaldaten wiederherstellen, nachdem Sie neue Daten erstellen"); Originator.SetMemento (Memento); System.out.println (Originator.getState (). GetAction ()); }}Drucken:
Erstellen Sie Originaldatenerstellung Memorandum -Objekt, speichern Sie den ursprünglichen Datenzustand. Erstellen Sie neue Daten nach dem Erstellen neuer Daten: Null nach dem Erstellen neuer Daten, stellen Sie das ursprüngliche Daten wieder her, das ein Zeichen kopiert