js设计模式:备忘录模式

作用:

封装的对象可以在对象触发行为时进行状态的记录与保存

也可以进行状态的回退,恢复之前的状态

示例:

javascript 复制代码
        class Editor{
            constructor(){
                 this.allText = ''
            }
            edit(text){
              this.allText += text
            }
            saveNow(){
                return new EditorText(this.allText)
            }
            backspacing(editorText){
                 this.allText = editorText.getText()
                 console.log(this.allText,'???')
            }
        }

        class EditorText{
            constructor(text){
                this.text = text
            }
            getText(){
                return this.text
            }
        }

        class History{
            constructor(){
                this.textNodeList = []
            }
            add(text){
              this.textNodeList.push(text)
            }
            delete(){
                this.textNodeList.pop()
                return this.textNodeList[this.textNodeList.length-1]
            }
        }

        const editor = new Editor()
        const history = new History()

        editor.edit('两个黄鹂鸣翠柳,')
        history.add(editor.saveNow())
        console.log(editor,'当前文本1')
        console.log(history,'历史记录1')


        editor.edit('一行白鹭上西天。')
        history.add(editor.saveNow())
        console.log(editor,'当前文本2')
        console.log(history,'历史记录2')

        //写的不对,撤回一下
        editor.backspacing(history.delete())
        console.log(editor,'当前文本3')
        console.log(history,'历史记录3')

        editor.edit('一行白鹭上青天。')
        history.add(editor.saveNow())
        console.log(editor,'当前文本4')
        console.log(history,'历史记录4')
相关推荐
朝阳394 分钟前
react【实战】搜索框(含联动动画,清空按钮)
前端·javascript·react.js
gCode Teacher 格码致知5 分钟前
Javascript提高:一个彩色小球在画布边界内反弹并留下渐变轨迹-由Deepseek产生
开发语言·javascript
小王C语言12 分钟前
【linux进程信号】————产生信号:signal自定义信号处理动作(自定义捕捉)、前后台进程、产生信号的方式(函数、软条件、硬件异常)....等等
运维·服务器·前端
ximu_polaris12 分钟前
设计模式(C++)-行为型模式-策略模式
c++·设计模式·策略模式
芝士就是力量啊 ೄ೨17 分钟前
Windows11使用Edge切屏后,会卡屏的解决方案
前端·edge
sinat_2554878119 分钟前
数组·学习笔记
java·javascript·笔记
尘世壹俗人32 分钟前
前端如何自适应宽高
前端
JianZhen✓40 分钟前
前端竞争力提升
前端
吃西瓜的年年43 分钟前
react(五)路由
前端·react.js·前端框架
IT_陈寒1 小时前
JavaScript的闭包差点让我加班到凌晨
前端·人工智能·后端