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

厦门市建设局综合业务平台网站凡科建站多少钱

厦门市建设局综合业务平台网站,凡科建站多少钱,网站开发 网站建设,做网站大约需要多少钱定义 在不破坏封装性的前提下,捕获一-个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。 应用场景 ➢在软件构建过程中,某些对象的状态在转换过程中,可能由于某种需要,要…

定义

在不破坏封装性的前提下,捕获一-个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。

应用场景

➢在软件构建过程中,某些对象的状态在转换过程中,可能由于某种需要,要求程序能够回溯到对象之前处于某个点时的状态。如果使用一些公有接口来让其他对象得到对象的状态,便会暴露对象的细节实现。
➢如何实现对象状态的良好保存与恢复?但同时又不会因此而破坏对象本身的封装性。

结构

在这里插入图片描述

代码示例

//Memento.h
/****************************************************/
#ifndef MEMENTO_H
#define MEMENTO_H
#include <iostream>#include <unordered_map>
#include <vector>
#include <list>
#include <string>using 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::vector<Memento> m_mementos;
};#endif
//test.cpp
/****************************************************/
#include "Memento.h"int 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.hkea.cn/news/106310/

相关文章:

  • 网站表单及商品列表详情模板如何搭建自己的网站
  • 网站域名登记证明百度高级搜索怎么用
  • 国外网站在国内做镜像站点网站搭建费用
  • 网站后台如何添加关键词软件开发公司
  • 手机做网站的网站windows优化大师卸载不了
  • 万网速成网站有哪些 功能自己的网站怎么推广
  • 邯郸哪有做网站的河南百度推广公司
  • 我是做环保类产品注册哪些浏览量大的网站推销自己的产品比较好呢西安网站seo优化公司
  • 网页传奇游戏排行昆明网络推广优化
  • 商城模板网站模板网站软文是什么
  • 校园网站推广方案怎么做网站排名推广工具
  • 深圳罗湖企业网站建设报价网络媒体发稿平台
  • 用别人公司域名做网站线下推广的渠道和方法
  • php mysql的网站开发外贸推广平台
  • 济南网站建设认可搜点网络能百度指数有三个功能模块
  • 网上商城网站建设意义在线代理浏览网页
  • 网站图片切换代码百度下载并安装最新版
  • 微信公众平台号申请注册入口杭州seo公司
  • 本周实时热点新闻事件seo文章代写一篇多少钱
  • 旺店通app手机企业版下载网站seo如何优化
  • 宝山区建设用地事务所网站网络公司有哪些
  • 用sql做简单的博客网站大连谷歌seo
  • 新手怎么学做网站就业培训机构有哪些
  • magento网站建设搭建网站步骤
  • 营销网站如何实现差异化南京seo公司
  • 服务器托管是啥搜索引擎优化排名培训
  • 山西手机网站建设网址大全123
  • b2c平台有哪些平台网址新区seo整站优化公司
  • WordPress突然全站404网站如何添加友情链接
  • 复制别人网站做第一站seo短视频网页入口引流下载