当前位置: 首页 > news >正文

商丘网站建设推广公司地址浏览器搜索引擎大全

商丘网站建设推广公司地址,浏览器搜索引擎大全,深圳免费建站,web前端开发岗位要求简介 备忘录模式(Memento Pattern)是一种行为型设计模式,它用于保存和恢复对象的状态。备忘录模式通过将对象的状态封装成一个备忘录(Memento),并将备忘录保存在一个管理者(Caretaker&#xff…

简介

备忘录模式(Memento Pattern)是一种行为型设计模式,它用于保存和恢复对象的状态。备忘录模式通过将对象的状态封装成一个备忘录(Memento),并将备忘录保存在一个管理者(Caretaker)中,来实现对对象状态的保存和恢复。

备忘录模式的核心思想是将对象的状态封装成一个备忘录对象,而不是直接暴露状态给其他对象。这样,其他对象就无法直接操作对象的状态。同时,备忘录模式还提供了一个管理者对象,用于保存和管理备忘录,可以实现对对象状态的保存和恢复。

描述

备忘录模式由三个核心组件组成:Originator(原始对象)、Memento(备忘录和Caretaker(管理者)。

  • Originator类保存了需要保存状态的对象,并能够根据当前状态创建备忘录和从备忘录中恢复原始状态。
  • Memento类是备忘录对象,负责保存Originator对象的状态。
  • Caretaker类是管理者对象,负责保存备忘录对象,提供了对备忘录的保存、获取和恢复功能。

原理

备忘录模式通过将对象的状态保存在备忘录对象中,将备忘录对象保存在管理者对象中,来实现对对象状态的保存和恢复。当需要保存当前状态时,Originator对象会创建一个包含状态的备忘录对象,并将备忘录对象交给Caretaker对象保存。当需要恢复到之前的状态时,Originator对象会从Caretaker对象获取对应的备忘录对象,并根据备忘录对象中保存的状态恢复原始状态。

1.创建一个备忘录,该类用于存储原发器的状态。
2.创建一个原发器类,该类拥有需要保存和恢复的状态,并提供保存状态和恢复状态的方法。
3.创建一个管理者类,用于管理备忘录对象的保存和获取。
4.在需要保存原发器状态的时候,原发器创建一个备忘录对象,并将自己的状态传递给备忘录对象。
5.管理者对象保存备忘录对象。
6.在需要恢复原发器状态的时候,管理者对象将备忘录对象交还给原发器。

类图

在这里插入图片描述

示例

假设有一个文本编辑器,用户可以输入文本并进行编辑操作。当用户希望撤销一些编辑操作时,可以使用备忘录模式保存编辑器状态。

在示例中,有三个主要类:

  1. Editor(原发器):表示文本编辑器,具有保存和恢复状态的方法,以及一个用于保存和获取备忘录的方法。
  2. EditorState(备忘录):表示编辑器的状态,保存了编辑器的文本内容。
  3. EditorHistory(管理者):管理备忘录对象的保存和获取。

C++示例代码:

#include <iostream>
#include <stack>
#include <string>// 备忘录
class Memento {
public:Memento(const std::string& text) : text(text) {}std::string getText() const {return text;}private:std::string text;
};// 原始对象
class TextEditor {
public:void setText(const std::string& text) {this->text text;}Memento createMemento() {return Memento(text);}void restoreFromMemento(const Memento& memento) {text = m.getText();}void printText() {stdcout << text << std::endl;}private:std::string text;
};// 管理者
class Caretaker {
public:void saveMemento(const Memento& memento){mementos.push(memento);}Memento getMemento() {if (!mementos.empty()) {Memento memento = mementos.top();mementos.pop();return memento;} else {return Memento("");}}private:std::stack<Memento> mementos;
};int main() {TextEditor editor;Caretaker caretaker;// 设置初始文本editor.setText("Hello, World!");// 保存文本状态caretaker.saveMemento(editor.createMemento());// 修改文本editor.setText("Hello, Memento!");// 打印当前文本std::cout << "Current Text: ";editor.printText();// 恢复到之前的状态Memento m = caretaker.getMemento();editor.restoreFromMemento(memento);// 再次打印文本std::cout << "Restored Text: ";editor.printText();return 0;
}

输出结果

Current Text: Hello, Memento!Restored Text: Hello, World!

解释

在上述示例中,TextEditor类是原始对象(Originator),它保存了需要保存状态的文本,并提供了创建备忘录和从备忘录中恢复状态的方法。Memento类是备忘录(Memento),它负责保存TextEditor对象的状态。Caretaker类是管理者(Caretaker),它负责保存备忘录对象,并提供了对备忘录的保存和获取功能。

首先设置初始文本为"Hello, World!“,并保存初始状态。然后,我们修改文本为"Hello, Memento Pattern!”,并打印当前文本。接下来,我们从Caretaker对象获取之前保存的备忘录对象,并将文本恢到之前的状态。最后,再次打印文本,可以看到文本已经恢复为之前保存的状态。

结论

备忘录模式通过将对象的状态保存到备忘录对象中,并在的时候将其恢复,实现了对对象状态的保存和恢复功能,同时保持了对象的封装性。该模式可以用于需要可撤销操作或历史记录功能的场景。

应用场景

  • 需要保存和恢复对象状态的场景,例如文本编辑器、操作撤销功能等。
  • 需要实现多级撤销操作的场景,例如图形编辑器中的多层次撤销操作。
  • 需要保存对象历史记录的场景,例如编辑器的编辑历史记录。
  • 需要实现对象副本功能的场景,在特定时候将对象恢复到某个历史状态。

总之,备忘录模式提供了一种简单且有效的方法来保存和恢复对象的状态,可以在需要保存对象状态的场景中很好地发挥作用。

http://www.hrbkazy.com/news/46086.html

相关文章:

  • 夹江网站建设在线数据分析网站
  • ecshop 文件大小超出网站限制seo基本概念
  • 在国外的网站做推广方案网店网络营销与推广策划书
  • 做网站前段用什么软件短期培训学什么好
  • 如何做招聘网站墨子学院seo
  • 安徽疫情最新消息今天封城了seo外包是什么意思
  • 怎么识别一个网站白百度一下你就知道
  • 网站编辑是做什么公司品牌营销策划
  • 网站建设如何切图seo搜索引擎优化原理
  • 怎么做微网站推广交换链接营销的经典案例
  • 个人做外贸的网站谷歌浏览器手机版免费官方下载
  • 做网站 前端友情链接交换教程
  • 国外电子政务j建设与我国电子政务网站建设对比长沙seo网络营销推广
  • 帮别人做网站赚钱吗新闻发稿
  • 做门图网站免费职业技能培训网
  • wordpress怎么发布文章到专题栏目seo自动推广工具
  • 广西住房城乡建设网站网站制作报价表
  • 做非经营网站需要营业执照新东方英语培训机构官网
  • 拟定一个物流网站的建设方案什么是软文写作
  • 印度做网站设计石家庄网络推广
  • wordpress去掉头像搜索引擎优化的具体措施
  • wordpress自媒体模版潍坊关键词优化软件
  • 网站功能调研百度词条优化
  • 做网站排行武汉seo
  • 网站建设如何做账苏州网站维护
  • 目前做网站需要什么cms品牌软文营销案例
  • 傻瓜式网站模板域名查询站长工具
  • 网站开发工程官网排名优化
  • 东莞站福公司工资品牌营销策划
  • 做废钢铁生意在哪个网站了解百度一下就一个