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

广西壮族自治区住房和建设厅网站手机建站网

广西壮族自治区住房和建设厅网站,手机建站网,图文制作app,引流推广方式备忘录模式是一种行为型设计模式,用于在不破坏封装性的前提下捕获一个对象的内部状态,并在该对象之外保存这个状态,以便之后可以将该对象恢复到之前的状态。这种模式通常用于需要记录对象状态历史、撤销操作或实现“回到过去”功能的场景。 在…

        备忘录模式是一种行为型设计模式,用于在不破坏封装性的前提下捕获一个对象的内部状态,并在该对象之外保存这个状态,以便之后可以将该对象恢复到之前的状态。这种模式通常用于需要记录对象状态历史、撤销操作或实现“回到过去”功能的场景。
在备忘录模式中,主要有三种角色:
① 备忘录(Memento):负责存储原发器(Originator)对象的内部状态。备忘录可以根据原发器提供的接口,获取状态或者恢复状态。
② 原发器(Originator):负责创建备忘录,并记录当前内部状态到备忘录中,或者从备忘录中恢复状态。
③ 管理者(Caretaker):负责保存备忘录对象,但是不能对备忘录的内容进行操作或者检查。
备忘录模式可以让对象在不暴露其实现细节的情况下,保存和恢复其内部状态,从而提供了更好的封装性和灵活性。

1、场景设计

实现场景:设计备忘录、原发器、管理者,操作一个字符串的备忘与恢复。

2、C++实现

`Memento` 类代表备忘录,`Originator` 类是原发器,负责创建备忘录和恢复状态,`Caretaker` 类是管理者,负责保存备忘录。在 `main` 函数中,我们演示了如何使用备忘录模式来保存对象的状态,并在需要时恢复到之前的状态。 

#include <iostream>
#include <string>// 备忘录类
class Memento {private:std::string state;public:Memento(){}Memento(const std::string& s) : state(s) {}std::string getState() const {return state;}
};// 原发器类
class Originator {private:std::string state;public:void setState(const std::string& s) {state = s;}std::string getState() const {return state;}Memento createMemento() {return Memento(state);}void restoreFromMemento(const Memento& m) {state = m.getState();}
};// 管理者类
class Caretaker {private:Memento memento;public:void saveMemento(const Memento& m) {memento = m;}Memento retrieveMemento() const {return memento;}
};int main() {Originator originator;Caretaker caretaker;// 设置初始状态originator.setState("State 1");std::cout << "Current state: " << originator.getState() << std::endl;// 创建备忘录并保存caretaker.saveMemento(originator.createMemento());// 修改状态originator.setState("State 2");std::cout << "Current state: " << originator.getState() << std::endl;// 恢复到之前的状态originator.restoreFromMemento(caretaker.retrieveMemento());std::cout << "Restored state: " << originator.getState() << std::endl;return 0;
}

3、Java实现

package behavioralpattern.memento;
// 备忘录类
class Memento {private final String state;public Memento(String state) {this.state = state;}public String getState() {return state;}
}// 原发器类
class Originator {private String state;public void setState(String state) {this.state = state;}public String getState() {return state;}public Memento createMemento() {return new Memento(state);}public void restoreFromMemento(Memento memento) {state = memento.getState();}
}// 管理者类
class Caretaker {private Memento memento;public void saveMemento(Memento memento) {this.memento = memento;}public Memento retrieveMemento() {return memento;}
}public class MementoDemo {public static void main(String[] args) {Originator originator = new Originator();Caretaker caretaker = new Caretaker();// 设置初始状态originator.setState("State 1");System.out.println("Current state: " + originator.getState());// 创建备忘录并保存caretaker.saveMemento(originator.createMemento());// 修改状态originator.setState("State 2");System.out.println("Current state: " + originator.getState());// 恢复到之前的状态originator.restoreFromMemento(caretaker.retrieveMemento());System.out.println("Restored state: " + originator.getState());}
}

`Memento` 类代表备忘录,`Originator` 类是原发器,负责创建备忘录和恢复状态,`Caretaker` 类是管理者,负责保存备忘录。在 `main` 方法中,我们演示了如何使用备忘录模式来保存对象的状态,并在需要时恢复到之前的状态。

http://www.yayakq.cn/news/703228/

相关文章:

  • 利用淘宝视频服务做视频网站中国联通与腾讯设立合作
  • 泰安网站制作哪家好做健身俱乐部网站的目的和意义
  • 做国内第一游戏数据门户网站网站正在建设中备案
  • 观澜专业做网站公司微信怎样建网站
  • 网站设计网页配色软件行业有哪些岗位
  • 企业建设门户网站的目的东莞网站系统哪里好
  • 淮上网站建设WordPress插件引入
  • 市工商局网站建设情况音乐网站建设
  • 南宁网站开发企业杭州网站设计网页
  • 商城网站合作协议seo公司被百度稿了能和解吗
  • 东莞美容网站建设anmpp wordpress
  • 建一个外贸网站要多少钱海南建站中心
  • 查询wordpress主题南昌网站排名优化费用
  • 济南网站建设seo优化经典软文案例50字
  • 电子商务网站创建方案做一个网站
  • 网站开发工作总结手机ps网页版在线制作
  • 做模拟人生类的游戏下载网站如何识别一个网站是否做的好
  • 网站开发语言分析wordpress博客 centtos
  • 网站模版免费下载seo点击
  • 嘉兴哪里做网站跳转到手机网站代码
  • 广州致格广告有限公司网站app软件开发平台游戏
  • 拍卖网站模板下载宁波自助建站模板
  • 网站备案各种问题汇总成都住房和城乡建设局网站
  • 帮忙做网站免费建设网站设计页面
  • 网站专业优化公司单页面网站如何优化引流
  • 专业网站制作公司案例青岛建立网站电话
  • 织梦网站管理安装广告设计培训班学校有哪些
  • 美声广告网站建设外 网站 公司
  • 电脑怎样做轰炸网站自动化培训机构排名
  • 成都网站开发制作网站页面设计考虑要素