Categorías
Design Patterns Stories

Patrón de diseño de Java: Memento

En el futuro, se inventará el viaje en el tiempo. El recuerdo es la clave para viajar en el tiempo. Básicamente, lo que hace es permitir que un objeto vuelva a su estado.

En el siguiente ejemplo, puede viajar en el tiempo a cualquier época de su vida y puede restaurar a una era anterior en la que haya estado.

Diagrama de clase de patrón de diseño de recuerdo

Patrón de diseño de recuerdo Código Java

package designpatterns.memento;
import java.util.List;
import java.util.ArrayList;
class Life {
    private String time;
 
    public void set(String time) {
        System.out.println("Setting time to " + time);
        this.time = time;
    }
 
    public Memento saveToMemento() {
        System.out.println("Saving time to Memento");
        return new Memento(time);
    }
 
    public void restoreFromMemento(Memento memento) {
    	time = memento.getSavedTime();
        System.out.println("Time restored from Memento: " + time);
    }
 
    public static class Memento {
        private final String time;
 
        public Memento(String timeToSave) {
        	time = timeToSave;
        }
 
        public String getSavedTime() {
            return time;
        }
    }
}
 
public class You {
    public static void main(String[] args) {
        List<Life.Memento> savedTimes = new ArrayList<Life.Memento>();
 
        Life life = new Life();
 
        //time travel and record the eras
        life.set("2000 B.C.");
        savedTimes.add(life.saveToMemento());
        life.set("2000 A.D.");
        savedTimes.add(life.saveToMemento());
        life.set("3000 A.D.");
        savedTimes.add(life.saveToMemento());
        life.set("4000 A.D.");
 
        life.restoreFromMemento(savedTimes.get(0));   
 
    }
}

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *