zoukankan      html  css  js  c++  java
  • 前端设计模式 备忘录模式

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

    // 状态备忘
    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());
    设计原则验证
    状态对象与使用者分开,解耦。
    符合开放封闭原则
  • 相关阅读:
    实体框架中的POCO支持
    实体框架中的POCO支持
    实体框架中的POCO支持
    (架构)UI开发的MVC模式
    (运算符)<< 运算符
    (运算符)& 运算符
    (运算符)?: 运算符
    Stream流 List<Map>排序
    elementui dialog 嵌套遮罩显示异常问题
    itext7 在已经存在的pdf文件中添加文本
  • 原文地址:https://www.cnblogs.com/wzndkj/p/11873870.html
Copyright © 2011-2022 走看看