前端设计模式——备忘录模式
(资料图片)
备忘录模式(Memento Pattern):是一种行为型设计模式,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。在JavaScript中,可以使用闭包来实现备忘录模式。
备忘录模式通常用于处理用户界面的状态。当用户与应用程序交互时,应用程序会根据用户的输入更改其状态。它可以使您保存和还原应用程序状态的快照,以便用户可以随时返回以前的状态。
以下是备忘录模式的几个关键组件:
1. Originator(发起人):负责创建要保存状态的对象,并在需要时将其状态存储到 Memento 中。1. Memento(备忘录):存储发起人对象的状态。1. Caretaker(管理者):负责存储和管理 Memento 对象。Caretaker 对象不会直接访问 Memento 对象,而是通过发起人对象来获取它。
在前端中,备忘录模式的一个实际应用是浏览器历史记录。当用户在浏览器中导航时,浏览器将当前页面的状态存储到历史记录中。用户可以随时返回以前的状态,并恢复页面的先前状态。
下面是一个简单的备忘录模式实现示例:
// Originatorclass Editor { constructor() { this.content = ""; } type(words) { this.content += words; } save() { return new EditorMemento(this.content); } restore(memento) { this.content = memento.getContent(); }}// Mementoclass EditorMemento { constructor(content) { this.content = content; } getContent() { return this.content; }}// Caretakerclass History { constructor() { this.states = []; } push(state) { this.states.push(state); } pop() { return this.states.pop(); }}// Usageconst editor = new Editor();const history = new History();// 编辑器输入内容editor.type("Hello, ");editor.type("World!");// 将当前状态保存到备忘录中,并将备忘录添加到历史记录中history.push(editor.save());// 继续编辑器输入内容editor.type(" How are you today?");// 输出当前编辑器内容console.log(editor.content); // "Hello, World! How are you today?"// 从历史记录中恢复上一个状态editor.restore(history.pop());// 输出恢复的编辑器内容console.log(editor.content); // "Hello, World!"
在这个例子中,`Editor` 类是发起人,它具有保存和恢复状态的方法。`EditorMemento` 类是备忘录,它存储发起人对象的状态。`History` 类是管理者,它存储和管理备忘录对象。
在使用备忘录模式时,我们首先创建一个编辑器对象 `editor`,并将其状态保存到历史记录中。然后我们继续输入一些内容,并再次将状态保存到历史记录中。接着,我们从历史记录中恢复先前的状态,并输出恢复的编辑器内容。
需要注意的是,在 JavaScript 中,我们可以直接访问对象的属性,而不需要使用 getter 和 setter 方法,因此在上面的示例中,我们可以直接使用 `editor.content` 来访问编辑器的内容。
标签:
相关文章
前端设计模式——备忘录模式
备忘录模式(MementoPattern):是一种行为型设计模式,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。在Jav
2023黄山纪念币发行银行有哪些?
2023黄山纪念币发行银行有哪些?答:中国工商银行、中国农业银行、中国银行、中国建设银行、交通银行、中国邮政储蓄银行、华夏银行、浦发银行
天天关注:百度回应“文心一言文生图功能”:来自文心跨模态大模型ERNIEViLG,使用互联网公开数据
3月23日,百度表示注意到对文心一言文生图功能的相关反馈,称文心一言是百度自研的大语言模型,文生图能力来自文心跨模态大模
每日速读!碳银能源全新户用产品与数字化解决方案亮相济南太阳能大会
3月20日,为期三天的第十八届中国(济南)国际太阳能利用大会暨综合能源展览会(SUCE)在济南高新国际会展中心开幕,浙江碳银能源科技有限公司(
蜗组词蜗的组词蜗字怎么组词_全球播报
“蜗”字在开头的词语蜗舍蜗跧蜗行蜗篆蜗醢蜗量蜗螺蜗角蜗蚓蜗虫蜗窄蜗痕蜗疽蜗角蚊睫蜗睆蜗膏水蜗行牛步蜗牛舍蜗牛蜗牛灰散蜗房
诺氟沙星一次吃几粒(诺佛沙星)|天天快看
诺氟沙星一次吃几粒,诺佛沙星这个很多人还不知道,现在让我们一起来看看吧!1、【适应症】适用于敏感菌引起的尿路感染、淋病、前列腺炎,肠道
世界关注:保护野生动物 守护多样之美(法治头条)
一场春雪过后,四川雅安天全县二郎山上,银装素裹。雪包裹着树枝,云雾笼罩着人。从山下出发,盘山而上,静谧的喇叭河自然保护区里不时传来几
【焦点热闻】gta5作怎么泡妞_gta4怎么泡妞
1、找辆车,在路上找个穿的暴露一点的,使劲按喇叭。2、她过来到车窗对你说话时你按回车,她就上车,找个偏僻的地方。3、她让
qq空间留言祝福语贺词
1、送你个快乐钟表永不停,闹铃追得烦恼无影踪;送你个开心无限哈哈镜,你是穿越大侠飞跃幽默时空。朋友,苦短人生,开心才是硬道理。记得要快
世界观速讯丨关闭前数个月,美国硅谷银行首席风险官空缺长达8个月
据《每日邮报》20日报道,有文件显示,在美国硅谷银行发生关闭前数个月,该银行的首席风险官无故离职,导致该职位空缺长达8个月。美国联邦法规
五一2022法定几天,2022年五一放几天假-天天滚动
2022年五一法定假日是5月1日这一天。2022年五一劳动节放假5天,具体时间是4月30日至5月4日,但是4月24日(星期日)、5月7日(星期六)要上班。202
今天,缅怀“拓荒牛”和“青骢马”
今天我国核潜艇首任总设计师彭士禄院士逝世2周年歼-10战机总设计师宋文骢院士逝世7周年他们中一位是我国核动力事业的“拓荒牛”一位是我国...
聚氯乙烯树脂商品报价动态(2023-03-22)
交易商品牌 产地交货地最新报价聚氯乙烯树脂 SG-5优级品山西勇鑫能源科技有限公司襄垣县瑞恒化工山西省 长治市6000元 吨河南宝兴环保科技有限
天天报道:红星二锅头有绿、蓝、白3版,区别到底在哪?内行:有3点得认清
喝酒人最喜欢尝试不同地方的特色,说起白酒中独具“京味儿”的,自然得是土生土长的红星二锅头打头阵!话说回来,怕是很多人不清楚以为“二...
辽宁铁岭县打造“家门口就业圈”
辽宁日报记者王晓波“各位好朋友大家好,铁岭县本周五直播带岗又开始了!”“今天我们给大家带来了120余家企业,400多个岗位。”“今天的岗...
全球今日讯!世界上最大的沙漠是什么沙漠_叫什么名字
欢迎观看本篇文章,小勉来为大家解答以上问题。世界上最大的沙漠是什么沙漠,叫什么名字很多人还不知道,现在让我们一起来看看吧
雅雯这个名字的含义是什么_雅雯是什么意思 世界微速讯
1、寓意:用作人名意指高洁、美丽、文雅、有品味、品德高尚、为人正直之义。2、拼音:yǎ、yā部首:隹笔画:12繁体:雅基
天安(00028)公布2022年业绩 股东应占溢利约15.29亿港元 同比增长6.87%
智通财经APP讯,天安(00028)公布2022年业绩,收入约50 87亿港元,同比增加98%。公司股东应占溢利约15 29亿港元,同比增长6 87%;每股盈利
快报:天海防务大宗交易成交6780.00万元
天海防务3月21日大宗交易平台出现一笔成交,成交量1500 00万股,成交金额6780 00万元,大宗交易成交价为4 52元,相对今日收盘价折价7 00%。该
今日聚焦!ATFX国际:衰退预期升温,过去一周,原油破位大跌
ATFX国际:衰退预期升温,过去一周,原油破位大跌,加息,美联储,高通胀,低通胀,wti,原油价格,美元指数
前2月全国一般公共预算支出40898亿元,同比增长7% 民生等重点领域支出得到有力保障 世界最资讯
财政部日前公布今年前两月财政收支情况。财政部有关负责人表示,1—2月累计,全国一般公共预算收入同比下降1 2%,主要是2021年末缓税收入在去
2023年度“全美华人30岁以下青年精英榜”评选结果揭晓
人民网华盛顿3月20日电(记者李志伟)当地时间3月19日,2023年度(第七届)“全美华人30岁以下青年精英榜”评选结果在洛杉矶揭晓。历时3个...
官方:英足总将对富勒姆、主帅席尔瓦和米特洛维奇行为提出指控_环球速看
官方:英足总将对富勒姆、主帅席尔瓦和米特洛维奇行为提出指控,曼联,足总杯,英足总,富勒姆队,波兰足球,巴西足球,米特洛维奇,足球运动员,大卫·
【环球播资讯】《江湖十一》捏人属性及天赋分配介绍[多图]
在江湖十一游戏中,《江湖十一》捏人属性及天赋分配介绍是游戏中十分重要的攻略,有些玩家对此不甚了解。可以一起跟着小编关注以下内容:这些