Capture an object’s internal state to be able to restore it later. 在不破坏封装性的前提下,捕获一个对象的内部状态。这样以后就可将该对象恢复到原先保存的状态。


    动机:记录对象的内部状态,方便「撤销」和「重做」操作。

    适用性:必须保存一个对象在某一时刻的状态(部分或者全部),以便于恢复到之前的状态;如果用一个接口来让其它对象直接得到这些状态,将会暴露对象的实现细节并破坏其封装性。


    结构和实现:

    1. class Originator {
    2. private memoList = [];
    3. setMemento(cursor) {
    4. const state = this.memoList[cursor].getState();
    5. this.rollbackTo(state);
    6. };
    7. createMomento() {
    8. this.memoList.push(new Memento());
    9. };
    10. }
    11. class Memento {
    12. getState() {};
    13. setState() {};
    14. }