【说明】
在软件系统中,通常都会给用户提供取消、不确定或者错误的操作,允许将系统回复到原先的状态。现使用备忘录(Memento)模式实现该要求,得到如图6-1所示的类图。

memento包含了要被恢复的状态。originator创建并在Memento中存储状态。CareTaker负责从Memento中恢复状态。

【java代码】

import java.util.*;class Memento {private 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 saveStateToMemento() {return (1) ;}public void getStateFromMemento(Memento Memento) {state = (2);}
}class CareTaker {private List<Memento> mementoList = new ArrayList<Memento>();public (3) {mementoList.add(state);}public (4) {return mementoList.get(index);}
}class MementoPaneDemos {public static void main(String[] args) {Originator originator = new Originator();CareTaker careTaker = new CareTaker();originator.setState("State #1");originator.setState("State #2");careTaker.add((5));originator.setState("State #3");careTaker.add((6));originator.setState("State #4");System.out.println("Current State:" + originator.getState());originator.getStateFromMemento(careTaker.get(0));System.out.println("First saved State:" + originator.getState());originator.getStateFromMemento(careTaker.get(1));System.out.println("Second saved State:" + originator.getState());}
}

答案:

(1):new Memento(state) 或 new Memento(this.state)或 new Memento(getState())
(2):Memento.getState()
(3):void add(Memento state)
(4):Memento get(int index)
(5):originator.saveStateToMemento()
(6):originator.saveStateToMemento()

【软件设计师】2022年上半年软件设计师 下午试题六(原题及答案)相关推荐

  1. 2019重大信息安全事件_2019上半年信息安全工程师下午案例分析真题与答案解析...

    信管网将在2019年上半年信息安全工程师考试结束后免费发布2019上半年信息安全工程师下午案例分析真题与答案解析供各位考友查看和估分,敬请关注信管网. 2019年信息安全工程师案例分析真题与答案试题一 ...

  2. 2022年上半年系统集成项目管理工程师综合知识真题及答案解析

    2022年上半年系统集成项目管理工程师综合知识真题及答案解析 1.第五代移动通信技术(5G)是新一代宽带移动通信技术,()不是5G的特点. A.高速率 B.宏基站 C

  3. 2021年上半年系统集成项目管理工程师下午案例分析真题及答案解析

    2021年上半年系统集成项目管理工程师下午案例分析真题及答案解析 试题一(18分) 某银行计划开发一套信息系统,为了保证交付质量,银行指派小张作为项目的质量保证工程师.项目开始后,小张开始对该项目质量 ...

  4. 2021年上半年系统集成项目管理工程师案例分析真题及答案解析

    2021年上半年系统集成项目管理工程师案例分析真题及答案解析 试题一(18分) 阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内. [说明] 某银行计划开发一套信息系统,为了保证交付质量, ...

  5. 2021年上半年系统集成项目管理工程师综合知识真题及答案解析

    2021年上半年系统集成项目管理工程师综合知识真题及答案解析 1.关于区块链的描述,不正确的是:(). A.区块链的共识机制可有效防止记账节点信息被篡改 B.区块链可在不可信的网络进行可信的信息交换 ...

  6. 15年上半年系统集成项目管理工程师案例分析真题及答案

    15年上半年系统集成项目管理工程师案例分析真题及答案 http://wenku.baidu.com/link?url=XNk4wfm6DnEu0_7VD9KHzw5eGUZVKShVmsRZXAVUi ...

  7. 2022年襄阳宜城市部分事业单位招聘模拟题及答案

    题库来源:优题宝[公主号] 1.下列选项中,与资料不符的是: A.2016年我国城市天然气供气总量比2015年增长12%以上 B.从2007年到2016年,我国城市天然气用气人口逐渐增长 C.2016 ...

  8. 2022医院三基相关专业每日一练模拟题及答案

    题库来源:优题宝公众号 2022医院三基相关专业每日一练模拟题及答案,根据最新医院三基大纲与历年真题汇总编写,包含医院三基常考重点题型与知识点,有助于考生复习备考医院三基,取得好成绩. 1.对于大面积 ...

  9. 2022辽宁铁岭市银州区招聘社区工作者精选模拟题及答案

    2022辽宁铁岭市银州区招聘社区工作者精选模拟题及答案,根据最新社区工作者大纲与历年真题汇总编写,包含社区工作者常考重点题型与知识点,有助于考生复习备考社区工作者,取得好成绩. 1.参加城乡居民养老保 ...

  10. 2022年计算机二级考试MySQL数据库程序设计冲刺题及答案

    题库来源:优题宝公众号 2022年计算机二级考试MySQL数据库程序设计冲刺题及答案,由优题宝公众号根据最新计算机二级考试MySQL数据库程序设计大纲与历年计算机二级考试MySQL数据库程序设计真题汇 ...

最新文章

  1. salmap绕waf
  2. java 主题爬虫_主题爬虫 - 长颈鹿Giraffe - 博客园
  3. zTree树形菜单使用实例
  4. 基于JAVA+SpringMVC+Mybatis+MYSQL的网上零食销售系统
  5. 微课|中学生可以这样学Python(2.2.1节):算术运算符
  6. ctfmon是什么启动项_ctfmon是什么启动项?
  7. CIC滤波器设计原理总结
  8. CH341ser(usb转串口)驱动
  9. 卓有成效的管理者—第七章 有效的决定
  10. vmware 12 许可证秘钥
  11. 软件工程homework----九宫格记忆网
  12. ET1100和ET1200的区别
  13. 解决克隆RHEL7后网络无法启动问题
  14. TypeError: can‘t unbox heterogeneous list: int64 = float64
  15. J2EE重要的技术架构图
  16. 台式机:喇叭+麦克风二合一转接头DIY
  17. php安全新闻早八点-Microdoor-第一季
  18. No subdirectories found for mandatory directory location ‘file: /config/*/‘
  19. WinForm 无毛边异形窗体
  20. 密友手稿显示牛顿被苹果砸头纯属后人杜撰

热门文章

  1. 2021年塔式起重机司机考试报名及塔式起重机司机免费试题
  2. java 文件比对(四)-- 使用 diffutils
  3. 计算机技术应用基础知识,计算机三级PC技术章节习题及答案:计算机应用的基础知识...
  4. font-family 字体及各大主流网站对比
  5. 四川途志:短视频营销公司做视频广告投放有技巧吗?
  6. 在VB语言中,DOEVENTS的具体的用法和含义
  7. IOS 10.3.3 越狱
  8. Android apk下载与安装
  9. android 支付宝第三方支付
  10. 阵列天线方向图乘积定理的Python实现