备忘录模式

随时记录一个对象的状态变化,随时可以恢复对象之前的某个状态(如撤销功能)。

//备忘类
class Memento {
    constructor(content) {
        this.content = content;
    }
    getContent() {
        return this.content;
    }
}

//备忘列表
class CareTaker {
    constructor() {
        this.list = [];
    }
    add(memento) {
        this.list.push(memento);
    }
    get(index) {
        return this.list[index];
    }
}

//编辑器
class Editor {
    constructor() {
        this.content = null;
    }
    setContent(content) {
        this.content = content;
    }

    getContent() {
        return this.content;
    }

    saveContentToMemento() {
        return new Memento(this.content);
    }

    getContentFromMemento(memento) {
        this.content = memento.getContent();
    }
}

let editor = new Editor();
let careTaker = new CareTaker();

editor.setContent(111);
editor.setContent(222);
careTaker.add(editor.saveContentToMemento());//将当前内容备份
editor.setContent(333);
careTaker.add(editor.saveContentToMemento());//将当前内容备份
editor.setContent(444);

console.log(editor.getContent());

editor.getContentFromMemento(careTaker.get(1));
console.log(editor.getContent());

editor.getContentFromMemento(careTaker.get(0));
console.log(editor.getContent());
// 444
// 333
// 222
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值