1. Définition
Sans détruire l'encapsulation, capturez l'état interne d'un objet et sauvez cet état en dehors de l'objet. De cette façon, l'objet peut être restauré à son état enregistré d'origine plus tard.
2. Raisons de l'utilisation
Vous voulez restaurer l'état d'origine de l'objet à un moment donné.
3. Exemples de situations applicables
Il existe de nombreuses applications du mode mémo, mais nous l'avons vu, mais nous n'y avons pas pensé attentivement. Ce n'est que l'utilisation du mode mémo. Permettez-moi de vous donner quelques exemples:
Eg1. Utilisation de mémos dans JSP + Javabean:
Lorsque vous ajoutez un compte dans un système, vous devez remplir le nom d'utilisateur, le mot de passe, le numéro de contact, l'adresse et d'autres informations du formulaire. Si certains champs ne sont pas remplis ou ne sont pas remplis de manière incorrecte, lorsque l'utilisateur clique sur le bouton "Soumettre", vous devez enregistrer les options saisies par l'utilisateur sur la nouvelle page et inviter les mauvaises options. Ceci est réalisé en utilisant les caractéristiques SCOPE = "Request" ou Scope = "Session" de JavaBean, c'est-à-dire qu'elle est réalisée en utilisant le mode mémo.
Eg2. Lors de la réparation des freins de la voiture. Retirez d'abord les chicanes des deux côtés pour exposer les plaquettes de frein gauche et droite. Une seule pièce peut être supprimée et l'autre pièce sert de mémo pour indiquer comment le frein est installé. Ce n'est que après la réparation de cette pièce terminée que une autre pièce peut être retirée. Lorsque la deuxième pièce est supprimée, la première pièce devient un mémo.
Eg3. On dit qu'il n'y a pas de regret de médicament à acheter dans la vie. Nous payons tous le prix de ce que nous faisons, mais dans le monde doux, il y a des "médicaments de regret". Après avoir changé certains états de quelque chose, tant que nous sauvons certains états de la chose auparavant, nous pouvons restaurer l'état de la chose à travers le mode mémo. En fait, il s'agit également d'une "boîte au trésor au clair de lune" qui peut remonter le temps, et le mot "magie" est incroyable.
4. Structure et description du diagramme de classe
(1) Le diagramme de classe est le suivant:
(2) Description de la classe (i) Memento: rôle de mémorandum, le travail principal est le suivant:
Stocker l'état interne de l'objet initiateur;
Il peut protéger son contenu contre la lecture par n'importe quel objet autre que l'objet de l'origine.
(ii) INTÉRIEUR: Le rôle du sponsor, accomplit principalement les tâches suivantes:
Créer un objet Memo avec l'état interne actuel;
Utilisez l'objet Memo pour stocker son état interne.
(iii) Gardien: la personne responsable, l'œuvre est terminée comme suit:
Responsable de la préservation des objets de mémorandum;
Le contenu de l'objet mémo n'est pas enregistré.
5. Exemple
/ ** * objet de données * / classe publique DataState {private String Action; public void setAction (String Action) {this.action = action; } public String getAction () {return Action; }} / ** * Un objet qui enregistre la copie de l'état interne d'un autre objet. De cette façon, l'objet peut être restauré à l'état enregistré d'origine à l'avenir. * / import java.io.file; import java.io.serializable; classe publique memento implémente Serializable {/ * Private int numéro; fichier privé Fichier = NULL; public memento (originateur o) {this.number = o.getNumber (); this.file = o.getFile (); } public int getNumber () {return this.number; } public void setNumber (int } public File getFile () {return this.file; } public void setFile (fichier file) {this.file = file; } * / état de données privé; public memento (initiateur o) {this.state = o.getState (); } public DataState GetState () {return State; } public void setState (état de données) {this.state = state; }} Public Class Originator {/ * Private int numéro; fichier privé Fichier = NULL; Public Originator () {} // Créez un memento et transmetz-le dans Public Memento en tant que paramètre public memento getMento () {return new memento (this); } // retirer les données enregistrées de Memento et la restaurer à son état d'état d'état VOID SetMemento (memento m) {nombre = m.getNumber (); file = m.getFile (); } public int getNumber () {Numéro de retour; } public void setNumber (int } public file getFile () {return fichier; } public void setFile (fichier file) {this.file = file; } * / état de données privé; Public Originator () {} public Originator (DataTate State) {this.state = State; } // Créez un memento et transmettez-le dans Public Memento en tant que paramètre public memento getMento () {return new memento (this); } // Sortez les données enregistrées de Memento et restaurez-la à son état d'origine public void SetMemento (memento m) {/ * * L'objet créé par getMemento () est enregistré dans un conteneur. * Lorsqu'il doit être restauré, passez-le dans la méthode actuelle, puis utilisez getState () pour obtenir * / this.state = m.getState (); } public DataState GetState () {return State; } public void setState (état de données) {this.state = state; }} / * * L'originateur est utilisé pour charger des données, créer des objets de memento et restaurer les données d'origine via memento * / public class test {public static void main (String [] args) {// originator originator = new Originator (); // Originator.SetNumber (8); // // memento memento = originator.getMemento (); // System.out.println (memento.getNumber ()); DataState State = new DataTate (); State.SetAction ("Copier un caractère"); Originateur originateur = nouveau originateur (); System.out.println ("Créer des données originales"); Originator.SetState (État); System.out.println ("Créer un objet de mémorandum, enregistrer l'état de données d'origine"); Memento memento = originator.getMemento (); System.out.println ("Créer une nouvelle données"); Originator.SetState (nouveau DataTate ()); System.out.println ("Après avoir créé de nouvelles données:" + originator.getState (). GetAction ()); / * * memento doit être enregistré à un certain endroit et récupéré lorsque cela est nécessaire pour restaurer les données enregistrées à l'intérieur * / System.out.println ("Restaurer les données d'origine après avoir créé de nouvelles données"); Originator.SetMemento (Memento); System.out.println (Originator.getState (). GetAction ()); }}Imprimer:
Créer un objet de mémorandum de création de données d'origine, enregistrer l'état de données d'origine Créer une nouvelle donnée après avoir créé de nouvelles données: NULL Après la création de nouvelles données, restaurez les données d'origine Copier un caractère