zoukankan      html  css  js  c++  java
  • js设计模式——7.备忘录模式

    js设计模式——7.备忘录模式

      

    /*js设计模式——备忘录模式*/
    
    // 备忘类
    class Memento {
        constructor(content) {
            this.content = content;
        }
    
        getContent() {
            return this.content;
        }
    }
    
    // 备忘列表
    class CarTaker {
        constructor() {
            this.list = [];
        }
    
        add(memento) {
            this.list.push(memento);
        }
    
        get(index) {
            return this.list[index];
        }
    
        getList() {
            return this.list
        }
    }
    
    // 编辑器
    class Editor {
        constructor() {
            this.content = null;
        }
    
        setContent(content) {
            this.content = content;
        }
    
        getContent() {
            return this.content;
        }
    
        saveContentToMemento() {
            return new Memento(this.content);
        }
    
        getConentFromMemento(memento) {
            this.content = memento.getContent();
        }
    }
    
    // 测试代码
    let editor = new Editor()
    let careTaker = new CarTaker()
    
    editor.setContent('111')
    editor.setContent('222')
    
    careTaker.add(editor.saveContentToMemento())  // 将当前222内容备份
    editor.setContent('333')
    careTaker.add(editor.saveContentToMemento())  // 将当前333内容备份
    editor.setContent('444')
    
    console.log(editor.getContent())
    editor.getConentFromMemento(careTaker.get(1)) // 撤销
    console.log(editor.getContent())
    editor.getConentFromMemento(careTaker.get(0)) // 撤销
    console.log(editor.getContent())
    

     

  • 相关阅读:
    C#微信开发文档
    XML相关操作
    css基本样式总结
    CSS选择器及其优先级
    Java学习之路(七)
    G2( bizCharts ) React 绘制混合图例
    G2 绘制混合图例 demo
    python 前后端分离 简单的数据库返回接口
    nginx 跨域
    react-router-dom
  • 原文地址:https://www.cnblogs.com/hpx2020/p/10730761.html
Copyright © 2011-2022 走看看