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

浠水做网站的南京网站高端

浠水做网站的,南京网站高端,南阳seo,python在线编程入口定义 在不破坏封装性的前提下#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/814197/

相关文章:

  • 哪个网站做免费广告好上海人才网站
  • cn域名做网站竞价推广代理
  • 省建设干部培训中心网站网站地图1 500 怎么做
  • 制作一个网站需要哪些人网站建设经营服务合同
  • 山东省住房和城乡建设厅官方网站网易发布广州
  • 长沙设计网站效果设计师灵感网站
  • 做网站php都用什么框架把asp.net写的网站别人怎么访问
  • 网站建设捌金手指下拉六正规的代运营公司
  • 自己申请网站空间冀州建网站
  • 哈尔滨旅游团购网站建设江苏建设工程建设网
  • 在郑州做网站茶叶网站建设网页设计制作
  • 58做网站吗南京有关制作网站的公司
  • 申请建设门户网站的申请先做网站还是先申请域名
  • 门户网站怎么做seo玩具外贸好做吗
  • 网页设计模板的网站黄埔营销型网站建设
  • 企业为什么要建立网站江苏高校品牌专业建设工程网站
  • 网站建设公司需要交税么福建省城乡建设厅网站
  • dedecms网站首页网站正在建设中 源码下载
  • 论坛网站有哪些怎么wordpress主题
  • 网站搭建中企动力第一返利的网站怎么做
  • 在哪网站可以做农信社模拟试卷优衣库网站建设的目的
  • 杭州网站建设ttmwl网络平台推广公司
  • 工作室网站技能培训班
  • 东丰网站建设万盛网站制作
  • 安徽黄山网站建设wordpress 公众号 获取密码
  • 自己电脑做网站模板腾讯网站建设分析
  • 如何增加网站反链虚拟主机 2个网站
  • 手机网站调用分享wordpress.org移除
  • 工业和信息化部网站备案系统查询市场调研表模板
  • 网站流量转化线下推广活动有哪些