栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

设计模式之备忘录模式

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

设计模式之备忘录模式

当一个对象就对应一个保存对象状态的对象 当对象很多时 不利于管理 开销也很大 也就是说 简单的做个备份 new出另外一个对象 需要时在把备份的数据放到新对象中 这就暴露了对象内部的细节 解决方案就是使用备忘录模式

基本介绍 备忘录模式在不破坏封装性的前提下 捕获一个对象的内部状态 并在该对象之外保存这个状态 这样以后就可将该对象恢复到原先保存的状态可以这样理解 现实生活中的备忘录就是用来记录某些要去做的事情 或者是记录已经达到的共同意见的事情 以防忘记了。而在软件层面 备忘录模式有着相同的含义 备忘录对象主要用来记录一个对象的某种状态 或者某些数据 当要做回退时 可以从备忘录对象中获取原来的数据进行恢复操作属于行为型设计模式 角色及职责

originator 需要保存状态的对象

memento 备忘录对象 负责保存好记录 即originator内部状态

Caretaker 守护者对象 负责保存多个备忘录对象 使用集合管理提高效率

说明 如果希望保存多个originator对象的不同时间的状态 也可以 只需要使用HashMap String, 集合

代码示例

一个游戏角色的状态保存和恢复
Memento

public class Memento {
 private int vit;
 private int def;
 public Memento(int vit, int def) {
 this.vit vit;
 this.def def;
 public int getVit() {
 return vit;
 public void setVit(int vit) {
 this.vit vit;
 public int getDef() {
 return def;
 public void setDef(int def) {
 this.def def;

Caretaker

public class Caretaker {
 * 如果只保存一次状态
 private Memento memento;
 * 保存多次状态
 //private List Memento mementoList;
 * 对多个角色保存多个状态
 //private HashMap String ,List Memento rolesMements;
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/267498.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号