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

陕西示范校建设专题网站做网站商城

陕西示范校建设专题网站,做网站商城,页面设计理念说明,开发公司管理规章制度定义 在不破坏封装性的前提下#xff0c;捕获一-个对象的内部状态#xff0c;并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。 应用场景 ➢在软件构建过程中#xff0c;某些对象的状态在转换过程中#xff0c;可能由于某种需要#xff0c;要…定义 在不破坏封装性的前提下捕获一-个对象的内部状态并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。 应用场景 ➢在软件构建过程中某些对象的状态在转换过程中可能由于某种需要要求程序能够回溯到对象之前处于某个点时的状态。如果使用一些公有接口来让其他对象得到对象的状态便会暴露对象的细节实现。 ➢如何实现对象状态的良好保存与恢复?但同时又不会因此而破坏对象本身的封装性。 结构 代码示例 //Memento.h /****************************************************/ #ifndef MEMENTO_H #define MEMENTO_H #include iostream#include unordered_map #include vector #include list #include stringusing namespace std;// 备忘录类-游戏进度 class Memento { public:// 构造函数Memento(string state) : m_state(state) {}// 获取状态std::string getState() const{ return m_state;}private:std::string m_state; };// 发起类-游戏 class Game { public:// 设置状态void setState(string state) { m_state state;}// 获取状态string getState() { return m_state;}// 保存状态至备忘录Memento saveStateToMemento() { return Memento(m_state); }// 从备忘录获取状态void getStateFromMemento(const Memento memento) { m_state memento.getState(); }private:std::string m_state; };// 备忘录管理类-进度管理 class CareTaker { public:// 添加备忘录void addMemento(const Memento memento) { m_mementos.push_back(memento);}// 获取备忘录Memento getMemento(int index) { return m_mementos[index];}private:std::vectorMemento m_mementos; };#endif//test.cpp /****************************************************/ #include Memento.hint main() {Game game;CareTaker careTaker;// 通关game.setState(进度第一关通过);game.setState(进度第二关通过);// 保存进度进度被管理系统管理careTaker.addMemento(game.saveStateToMemento());// 继续通关game.setState(进度第三关通过);// 保存进度进度被管理系统管理careTaker.addMemento(game.saveStateToMemento());// 继续通关game.setState(进度第四关通过);// 当前进度cout 当前 game.getState() endl;// 获取首个进度game.getStateFromMemento(careTaker.getMemento(0));cout 1 game.getState() endl;// 获取第二个进度game.getStateFromMemento(careTaker.getMemento(1));cout 2 game.getState() endl;return 0; }运行结果 要点总结 备忘录(Memento) 存储原发器(Originator) 对象的内部状态,在需要时恢复原发器状态。Memento模式的核心是信息隐藏即Originator需要向外界隐藏信息保持其封装性。但同时又需要将状态保持到外界(Memento)。由于现代语言运行时(如C#、Java等) 都具有相当的对象序列化支持因此往往采用效率较高、又较容易正确实现的序列化方案来实现Memento模式。
http://www.w-s-a.com/news/210408/

相关文章:

  • Apache局域网网站制作wordpress外链自动保存
  • 网站备案号要怎么查询千锋教育培训机构地址
  • 门户网站建设要求几款免费流程图制作软件
  • 花生壳域名可以做网站域名吗wordpress内链工具
  • 猎头公司网站模板网站伪静态作用
  • 工程建设教育网站html成品网页模板下载
  • 同一ip 网站 权重wordpress 菜单 小图标
  • 网站没有icp备案wordpress d8主题 4.1
  • 手机网站建设推荐企业宣传页模板
  • 杭州市富阳区建设局网站动态域名做网站
  • 网站如何免费做SEO优化靖安县城乡规划建设局网站
  • 室内设计网站平台学新媒体运营最好的培训学校
  • 招聘网站建设工作总结湘潭seo
  • 台山网站设计哈尔滨网站建设外包公司
  • 常州城投建设招标网站网页设计入门教学视频
  • 石家庄教育平台网站建设wordpress 访问量统计
  • 为什么买的网站模版不好用ftp网站建设
  • 做网站办公照片crm系统视频
  • 网站建设 招标文件南昌做网络推广的
  • 增城电子商务网站建设浙江省住房和城乡建设部网站
  • 企业网站宽度给多少手机软件开发公司排名
  • 装修设计网站哪个平台最好免费自助建站工具
  • 网站建设规划结构网站服务费怎么做分录
  • 哪里有做网站的公司微商怎么开店步骤
  • 访问不了服务器的网站北京工业产品设计公司
  • 怎么棋牌网站建设口碑好的福州网站建设
  • 怎么样注册一个网站南通网站定制搭建
  • 网站免费正能量软件下载wordpress 多本小说
  • 临淄网站制作价格低长沙谷歌seo收费
  • 吴江公司网站建设电话免费的那种软件