Memento
Memento pattern is used to restore state of an object to a previous state. This pattern is used to implement Undo mechanism in a software application.
Memento pattern is implemented with two objects – Originator and CareTaker. Originator is the object whose state needs to be saved and restored, it uses Memento object to save and retrieve state. CareTaker object is responsible for storing and retrieving Memento object from a list of Memento.
Example
class Memento {
constructor(state) {
this.state = state;
}
}
class Originator {
constructor() {
this.state = null;
}
setState(state) {
this.state = state;
}
getState() {
return this.state;
}
saveToMemento() {
return new Memento(this.state);
}
restoreFromMemento(memento) {
this.state = memento.getState();
}
}
class CareTaker {
constructor() {
this.mementos = [];
}
addMemento(memento) {
this.mementos.push(memento);
}
getMemento(index) {
return this.mementos[index];
}
}
// Usage
const originator = new Originator();
const careTaker = new CareTaker();
originator.setState("State 1");
originator.setState("State 2");
careTaker.addMemento(originator.saveToMemento());
originator.setState("State 3");
careTaker.addMemento(originator.saveToMemento());
originator.setState("State 4");
console.log("Current State: " + originator.getState());
originator.restoreFromMemento(careTaker.getMemento(1));
console.log("Restored State: " + originator.getState());Last updated on