1. Definición
Sin destruir la encapsulación, capture el estado interno de un objeto y guarde este estado fuera del objeto. De esta manera, el objeto se puede restaurar a su estado guardado original más adelante.
2. Razones para usar
Desea restaurar el estado original del objeto en algún momento.
3. Ejemplos de situaciones aplicables
Hay muchas aplicaciones del modo memo, pero lo hemos visto, pero no hemos pensado cuidadosamente en ello. Esto es solo el uso del modo memo. Déjame darte algunos ejemplos:
Eg1. Uso de notas en JSP+Javabean:
Al agregar una cuenta en un sistema, debe completar el nombre de usuario, la contraseña, el número de contacto, la dirección y otra información en el formulario. Si algunos campos no se completan o se llenan incorrectamente, cuando el usuario hace clic en el botón "Enviar", debe guardar las opciones ingresadas por el usuario en la nueva página y solicitar las opciones incorrectas. Esto se logra utilizando las características de Javabean, es decir, se logra utilizando el modo MEMO.
Eg2. Al reparar los frenos del automóvil. Primero retire los deflectores en ambos lados para exponer las pastillas de freno izquierda y derecha. Solo se puede quitar una pieza, y la otra pieza sirve como una nota para indicar cómo se instala el freno. Solo después de que se complete la reparación de esta pieza se puede eliminar otra pieza. Cuando se retira la segunda pieza, la primera pieza se convierte en una nota.
Eg3. Se dice que no hay medicina de arrepentimiento para comprar en la vida. Todos estamos pagando el precio por lo que hacemos, pero en el mundo blando, hay "medicina de arrepentimiento". Después de cambiar ciertos estados de algo, siempre que salvemos ciertos estados de la cosa antes, podemos restaurar el estado de la cosa a través del modo de memo. De hecho, esta también es una "caja del tesoro de la luz de la luna" que puede retroceder el tiempo, y la palabra "magia" es sorprendente.
4. Estructura y descripción del diagrama de clases
(1) El diagrama de clases es el siguiente:
(2) Descripción de la clase (i) Memento: Memorandum rol, el trabajo principal es el siguiente:
Almacenar el estado interno del objeto iniciador;
Puede proteger su contenido de ser leído por cualquier objeto que no sea el objeto de originador.
(ii) Originador: el papel del patrocinador, completa principalmente las siguientes tareas:
Cree un objeto de memo con el estado interno actual;
Use el objeto Memo para almacenar su estado interno.
(iii) Careta: la persona a cargo, el trabajo se completa de la siguiente manera:
Responsable de preservar objetos de memorándum;
El contenido del objeto de memo no se guardan.
5. Ejemplo
/ *** Objeto de datos*/ public class DataState {private String Action; public void setAction (string action) {this.action = action; } public String getAction () {Acción de retorno; }} /*** Un objeto que guarda la copia del estado interno de otro objeto. De esta manera, el objeto se puede restaurar al estado guardado original en el futuro. */ import java.io.file; import java.io.serializable; public class Memento implementa serializable { /*private int número; Archivo privado Archivo = NULL; public Mento (Originator o) {this.number = o.getNumber (); this.file = o.getFile (); } public int getNumber () {return this.number; } public void setNumber (int número) {this.number = number; } Public File getFile () {return this.file; } public void setFile (archivo de archivo) {this.file = file; } */ estado de datos privado; public Mento (Originator o) {this.state = o.getState (); } public dataState getState () {return State; } public void setState (estado de datos) {this.state = state; }} Originator de clase pública { /* private int número; Archivo privado Archivo = NULL; Public Originator () {} // Crear un recuerdo y pasarlo a Memento público como parámetro public Memento getMemento () {return new Memento (this); } // Elimine los datos guardados de Memento y restaurarlos a su público estatal original void setmemento (Memento m) {number = m.getNumber (); archivo = m.getFile (); } public int getNumber () {número de retorno; } public void setNumber (int número) {this.number = number; } Public File getFile () {File return; } public void setFile (archivo de archivo) {this.file = file; }*/ estado de datos privado; Public Originator () {} Public Originator (Estado de DataState) {this.state = state; } // Crear un Memento y pasarlo a Memento público como parámetro Memento público getMemento () {return new Memento (this); } // Elimine los datos guardados de Memento y restaurarlos a su público estatal original void setmemento (Memento m) { / * * El objeto creado por getMemento () se guarda en un contenedor. * Cuando sea necesario restablecer, pasarlo al método actual y luego use getState () para obtener */ this.state = m.getState (); } public dataState getState () {return State; } public void setState (estado de datos) {this.state = state; }} /** El originador se utiliza para cargar datos, crear objetos Memento y restaurar los datos originales a través de Memento*/ Public Class Test {public static void main (String [] args) {// Originator Originator = new Creator (); // originator.setNumber (8); // // Memento Memento = Originator.getMemento (); // System.out.println (Memento.getNumber ()); DataState State = new DataState (); state.SetAction ("Copiar un carácter"); Originator Originator = New Originator (); System.out.println ("Crear datos originales"); originator.setState (estado); System.out.println ("Crear objeto Memorandum, guardar el estado de datos original"); Memento Memento = Originator.getMemento (); System.out.println ("Crear nuevos datos"); originator.setState (new DataState ()); System.out.println ("Después de crear nuevos datos:" + originator.getState (). GetAction ()); /** Memento debe guardar en un determinado lugar y recuperarse cuando sea necesario para restaurar los datos guardados dentro de IT*/ System.out.println ("Restaurar los datos originales después de crear nuevos datos"); originator.setMemento (Memento); System.out.println (originator.getState (). GetAction ()); }}Imprimir:
Crear objeto de memorándum de creación de datos original, guarde el estado de datos original, cree un nuevo datos después de crear nuevos datos: NULL Después de crear nuevos datos, restaurar los datos originales Copiar a un carácter