Capture an object’s internal state to be able to restore it later. 在不破坏封装性的前提下,捕获一个对象的内部状态。这样以后就可将该对象恢复到原先保存的状态。
动机:记录对象的内部状态,方便「撤销」和「重做」操作。
适用性:必须保存一个对象在某一时刻的状态(部分或者全部),以便于恢复到之前的状态;如果用一个接口来让其它对象直接得到这些状态,将会暴露对象的实现细节并破坏其封装性。
结构和实现:
class Originator {
private memoList = [];
setMemento(cursor) {
const state = this.memoList[cursor].getState();
this.rollbackTo(state);
};
createMomento() {
this.memoList.push(new Memento());
};
}
class Memento {
getState() {};
setState() {};
}