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

国内网站如何做流量做一个网站的总结

国内网站如何做流量,做一个网站的总结,十堰市公司网站建设,各大网站怎么把世界杯做头条备忘录模式#xff08;Memento Pattern#xff09;是一种行为型设计模式#xff0c;用于在不破坏封装性的前提下#xff0c;捕获并保存对象的内部状态#xff0c;以便在将来的某个时刻可以恢复到之前的状态。备忘录模式的核心是状态的保存和恢复#xff0c;常用于实现撤销…备忘录模式Memento Pattern是一种行为型设计模式用于在不破坏封装性的前提下捕获并保存对象的内部状态以便在将来的某个时刻可以恢复到之前的状态。备忘录模式的核心是状态的保存和恢复常用于实现撤销、回滚等功能。 备忘录模式的应用场景 备忘录模式特别适合以下场景 撤销/恢复操作例如文本编辑器中的撤销功能通过备忘录保存每次操作的状态用户可以随时回到某个历史状态。 数据快照保存对象在某个时刻的快照以便之后回溯或调试。 事务管理在处理复杂的事务时可以在中间点保存状态当某个操作失败时回滚到之前的状态。 备忘录模式的核心 备忘录模式的主要组成部分包括 发起者Originator负责创建并恢复备忘录保存当前的状态到备忘录中或者从备忘录中恢复状态。 备忘录Memento用于存储发起者的内部状态不对外公开备忘录的实现细节。 负责人Caretaker负责保存和管理备忘录但不会操作或修改备忘录的内容。它只知道备忘录保存的状态并在需要时将备忘录传递回发起者进行状态恢复。 备忘录模式强调的是封装性发起者的内部状态不应该对外暴露备忘录类也应该避免暴露这些细节。 备忘录模式的示例代码 假设我们在开发一个文本编辑器并希望提供撤销和恢复功能每当用户输入一段文本时我们将保存当前状态以便用户可以随时撤销操作。 1. 定义发起者、备忘录和负责人 #include QDebug #include QString #include QStack// 备忘录类保存文本编辑器的状态 class Memento { private:QString state; // 保存的状态public:Memento(const QString state) : state(state) {}QString getState() const {return state; // 返回保存的状态} };// 发起者类文本编辑器 class TextEditor { private:QString text; // 当前的文本状态public:void setText(const QString newText) {text newText;}QString getText() const {return text;}// 创建备忘录保存当前状态Memento* save() const {return new Memento(text);}// 从备忘录中恢复状态void restore(Memento* memento) {if (memento) {text memento-getState();}} };// 负责人类管理备忘录 class Caretaker { private:QStackMemento* history; // 保存备忘录的栈public:void saveMemento(Memento* memento) {history.push(memento); // 保存当前状态的备忘录}Memento* undo() {if (!history.isEmpty()) {Memento* lastState history.pop(); // 取出最后一个保存的备忘录return lastState;}return nullptr; // 没有更多历史状态}~Caretaker() {// 清理保存的备忘录while (!history.isEmpty()) {delete history.pop();}} };// 使用示例 int main() {TextEditor* editor new TextEditor();Caretaker* caretaker new Caretaker();// 初始文本editor-setText(Hello);qDebug() Current text: editor-getText(); // 输出Current text: Hello// 保存状态caretaker-saveMemento(editor-save());// 用户修改文本editor-setText(Hello, World);qDebug() Current text after modification: editor-getText(); // 输出Current text after modification: Hello, World// 再次保存状态caretaker-saveMemento(editor-save());// 用户再次修改文本editor-setText(Hello, Qt!);qDebug() Current text after second modification: editor-getText(); // 输出Current text after second modification: Hello, Qt!// 执行撤销操作editor-restore(caretaker-undo());qDebug() Current text after undo: editor-getText(); // 输出Current text after undo: Hello, World// 再次执行撤销操作editor-restore(caretaker-undo());qDebug() Current text after second undo: editor-getText(); // 输出Current text after second undo: Hello// 清理内存delete editor;delete caretaker;return 0; }代码解析 Memento类这是备忘录类负责保存发起者的状态。在这个例子中它保存文本编辑器中的文本状态并通过getState方法提供对状态的访问。 TextEditor类这是发起者类它拥有当前的文本状态并且可以创建备忘录来保存当前状态或从备忘录中恢复状态。 Caretaker类这是负责人类它保存所有的备忘录通过栈存储历史状态并在需要时将备忘录返回给发起者进行状态恢复。undo方法从栈中弹出最后保存的状态模拟撤销操作。 客户端代码客户端通过修改文本并在每次修改后保存状态。通过调用Caretaker的undo方法客户端可以恢复到之前的文本状态模拟撤销操作。 备忘录模式的优点 保存历史状态备忘录模式允许你保存对象的状态并在将来恢复这些状态。非常适合实现撤销、恢复、回滚等功能。 封装性好备忘录类不暴露发起者的内部状态保证了发起者的封装性。发起者和负责人只通过备忘录进行状态的保存和恢复而不需要直接操作发起者的状态。 减少耦合负责人只负责保存和管理备忘录而不直接参与发起者的逻辑职责清晰。 备忘录模式的缺点 内存开销大每次保存对象的状态都需要创建一个新的备忘录对象尤其是当对象状态非常庞大时可能会导致大量的内存占用。 实现复杂性如果对象的状态非常复杂备忘录模式的实现也会相应复杂尤其是在需要保存多个部分或大对象时。 适合使用备忘录模式的情况 需要实现撤销/恢复操作例如文本编辑器、绘图工具、IDE等支持撤销/恢复功能的应用程序。 需要保存对象的历史状态当系统需要定期保存某些对象的状态以便将来回溯时可以使用备忘录模式。 需要避免直接暴露内部状态如果需要在多个地方保存对象的状态但不想让外界直接访问或修改对象的内部状态备忘录模式是一个很好的选择。 不适合使用备忘录模式的情况 对象状态非常庞大如果发起者的状态非常庞大频繁创建备忘录会带来较大的内存开销不适合使用备忘录模式。 状态变化频繁如果对象状态变化频繁并且每次都需要保存那么备忘录模式会带来大量性能问题。 Qt中的备忘录模式应用 在Qt开发中备忘录模式可以用于实现撤销/恢复功能。例如在一个文本编辑器或绘图工具中用户的每次操作都可能改变对象的状态这些操作可以通过备忘录模式保存下来并在需要时回滚或恢复。Qt中有些类如QUndoStack可以直接实现类似的撤销功能它们内部也可能应用了备忘录模式的思想。 总结 备忘录模式通过保存对象的状态并在将来进行恢复使得系统能够实现撤销、回滚等功能同时保证了对象内部状态的封装性。它非常适合用于保存对象的历史状态、支持撤销操作的场景。然而备忘录模式的内存开销较大不适合频繁状态变化且状态庞大的对象。
http://www.zqtcl.cn/news/245136/

相关文章:

  • 建设网站计划ppt模板核酸二维码
  • 宁波网络推广制作seo关键词推广公司
  • 东莞市网站推广西安推广公司无网不胜
  • 全国网站建设有实力建筑人才网123
  • 海安网站设计公司网站开发好学嘛
  • 网站建设深圳公司上海贸易公司注册条件
  • 深圳市坪山新区建设局网站给别人做网站去掉版权
  • 怎么做监测网站的浏览量有没有专业做股指的评论网站
  • 济南微信网站开发网上效果代码网站可以下载吗
  • 门户网站的设计常见的管理信息系统有哪些
  • 网站添加悬浮二维码成都游戏网站开发
  • 用jquery做网站百度seo排名规则
  • 免备案手机网站室内设计说明
  • 网站被做站公司贩卖怎样将qq空间建设为个人网站
  • 网站开发有哪几类淮安app开发公司
  • 营销网站建设公司哪家好兵团第二师建设环保局网站
  • 做推广最好的网站是哪个深圳办公室装修招标
  • 郑州高端网站制作wordpress那个版本好
  • wordpress屏蔽右键f12奉化首页的关键词优化
  • cn域名做犯法网站做电影网站需要哪些证
  • 官方网站有哪些韶关做网站的公司
  • 商城网站设计公司怎么样网站制作预算
  • 在济南什么人想做网站网站建设后怎么做主页
  • 联合年检怎么做网站上国家备案查询
  • 社交网站wap模板wordpress网址导航插件
  • 沈阳快速建站公司有哪些国外做二手服装网站
  • 手机如何建立网站平台seo比较好的优化
  • 电商网站建设外包禅城南庄网站制作
  • 哈尔滨企业网站开发报价免费php网站源码
  • 东莞市公司网站建设淄博网站制作营销