Latest web development tutorials

Memento modello

modalità Memo (Memento Pattern) per salvare uno stato di un oggetto in modo da ripristinare l'oggetto al momento opportuno. modelli d'ordine appartengono modelli comportamentali.

introduzione

Intento: senza violare l'incapsulamento di catturare lo stato interno di un oggetto, e salvare lo stato di fuori dell'oggetto.

Principalmente per risolvere: il modello è il cosiddetto memorandum senza distruggere il pacchetto, catturare lo stato interno di un oggetto, e salvare lo stato di fuori dell'oggetto in modo che l'oggetto può poi essere ripristinato ad uno stato precedentemente salvato.

Quando utilizzare: molte volte abbiamo sempre bisogno di registrare lo stato interno di un oggetto, lo scopo di farlo è quello di permettere agli utenti di annullare il funzionamento incerto o non corretta, può essere ripristinato al suo stato originale in modo che egli ha "rammarico" per mangiare.

Come risolvere: un promemoria per classe progettato per memorizzare lo stato dell'oggetto.

Codice chiave: clienti non coppia con classe appunto, insieme con la classe di gestione memo.

Esempi di applicazione: 1, pentirsene dopo.2, quando si gioca l'archivio gioco. 3, CTRI di Windows corsia + Z. 4, cioè nella parte posteriore. 4, il database di gestione delle transazioni.

Vantaggi: 1, per fornire agli utenti un modo per ripristinare lo stato del meccanismo che consente agli utenti di essere più comodo per ritornare ad una storia dello stato.2, per ottenere un pacchetto di informazioni, in modo che l'utente non ha bisogno di essere preoccupati per lo stato di conservazione dei dati.

Svantaggi: consumano risorse.Se le variabili membro della classe anche, è tenuta a prendere fino a relativamente grandi risorse, e ogni volta che si salva consuma una certa quantità di memoria.

scenari di utilizzo: 1, la necessità di salvare / ripristinare lo stato rilevante dei dati della scena.2, è prevista una operazione di ripristino.

Nota: 1, al fine di soddisfare i principi di Demetra, aggiungere anche un promemoria gestione della classe.2, al fine di salvare la memoria, è possibile utilizzare la modalità di memo + prototipo del modello.

realizzazione

Modalità Memo utilizza tre classi diMemento,Originator ecustode.Memento che contiene l'oggetto da ripristinare nella condizione. Originator Memento oggetto viene creato e memorizzato nello stato. oggetto custode è responsabile per il ripristino di oggetti da stato Memento.

MementoPatternDemo,i nostri corsi dimostrativi utilizzandocustodeeOriginatoroggetto per visualizzare lo stato del recupero dell'oggetto.

modello Memorandum diagramma UML

fase 1

Creare una classe Memento.

Memento.java

public class Memento {
   String stato privato;

   Memento pubblico (stato String) {
      this.state = Stato;
   }

   public String getState () {
      stato tornare;
   }	
}

fase 2

Crea classe Originator.

Originator.java

public class Originator {
   String stato privato;

   setState public void (stato String) {
      this.state = Stato;
   }

   public String getState () {
      stato tornare;
   }

   pubblico Memento saveStateToMemento () {
      restituire nuova Memento (stato);
   }

   public void getStateFromMemento (Memento Memento) {
      state = Memento.getState ();
   }
}

fase 3

Crea classe custode.

CareTaker.java

import java.util.ArrayList;
import java.util.List;

public class custode {
   Elenco privato <Memento> mementoList = new ArrayList <Memento> ();

   public void add (stato di Memento) {
      mementoList.add (stato);
   }

   Memento pubblico ottenere (int index) {
      tornare mementoList.get (indice);
   }
}

fase 4

Utilizzarecustodeeideatoredegli oggetti.

MementoPatternDemo.java

public class MementoPatternDemo {
   Main (string [] args) {public static void
      Originator ideatore = new Originator ();
      Custode Custode = new custode ();
      originator.setState ( "Stato # 1");
      originator.setState ( "Stato # 2");
      careTaker.add (originator.saveStateToMemento ());
      originator.setState ( "Stato # 3");
      careTaker.add (originator.saveStateToMemento ());
      originator.setState ( "Stato # 4");

      System.out.println ( "Stato attuale:" + originator.getState ());		
      originator.getStateFromMemento (careTaker.get (0));
      System.out.println ( "Prima salvato Stato:" + originator.getState ());
      originator.getStateFromMemento (careTaker.get (1));
      System.out.println ( "Seconda salvato Stato:" + originator.getState ());
   }
}

fase 5

Verifica uscita.

Stato attuale: Stato # 4
Stato Prima salvato: Stato # 2
State Second salvato: Stato # 3