2019独角兽企业重金招聘Python工程师标准>>>

Memento备忘录设计模式是一个保存另外一个对象内部状态拷贝的对象,这样以后就可以将该对象恢复到以前保存的状态。Memento备忘录设计模式的结构如下:

Memento备忘录设计模式有以下3个重要角色:

Originator:需要保存内部状态的对象。

Caretaker:为Originator保存并恢复状态的对象。

Memento:存放Originator内部状态的对象,由Originator进行读写,并且Caretaker进行维护。

Memento备忘录设计模式例子代码如下:

// Memento
class Memento{private String state;public Memento(String state){this.state = state;}public String getState(){return state;}
}// Caretaker
class Caretaker{private Stack<Memento> mementos = new Stack<Memento>();public void addMemento(Memento m){mementos.push(m);}public Memento getMemento(){if(!mementos.empty()){return mementos.pop();}return null;}
}// Originator
public class Originator{private String state;public Originator(String state){this.state = state;}public void setState(){this.state = state;}public String getState(){return state;    }public Memento createMemento(String state){return new Memento(state);}public static void main(String[] args){Originator originator = new Originator(“State1”);Caretaker caretaker = new Caretaker();caretaker.addMemento(originator. createMemento(originator.getState()));originator.setState(“State2”);String restore = caretaker. getMemento().getState();System.out.println(“Current originator state=” + originator.getState() + “,restore state=” + restore);}
}

程序运行结果:

Currentoriginator state= State2,restore state= State1

Memento备忘录设计模式常用于文字编辑软件/IDE集成开发环境中的撤销和恢复操作。

转载于:https://my.oschina.net/hongdengyan/blog/195549

设计模式16——Memento设计模式相关推荐

  1. memento模式_Java中的Memento设计模式-示例教程

    memento模式 记忆模式是行为设计模式之一 . 当我们要保存对象的状态以便以后可以恢复时,可以使用Memento设计模式. 使用Memento模式以这种方式实现该目的,即无法在对象外部访问对象的已 ...

  2. Java中的Memento设计模式-示例教程

    记忆模式是行为设计模式之一 . 当我们要保存对象的状态以便以后可以恢复时,可以使用Memento设计模式. 记忆模式用于以这种方式实现该目的,即在对象外部无法访问该对象的已保存状态数据,从而保护了已保 ...

  3. 行为设计模式 - Memento设计模式

    行为设计模式 - Memento设计模式 Memento 设计模式是行为设计​​模式之一.当我们想要保存对象的状态以便稍后可以恢复时,使用Memento设计模式.Memento模式用于实现这一点,使得 ...

  4. memento模式_Java中的Memento设计模式

    memento模式 Memento design pattern is one of the behavioral design pattern. Memento design pattern is ...

  5. java memento_memento模式_Java中的Memento设计模式-示例教程

    memento模式 记忆模式是行为设计模式之一 . 当我们要保存对象的状态以便以后可以恢复时,可以使用Memento设计模式. 使用Memento模式以这种方式实现该目的,即无法在对象外部访问对象的已 ...

  6. [Head First设计模式]生活中学设计模式——迭代器模式

    系列文章 [Head First设计模式]山西面馆中的设计模式--装饰者模式 [Head First设计模式]山西面馆中的设计模式--观察者模式 [Head First设计模式]山西面馆中的设计模式- ...

  7. 创建设计模式 - 抽象工厂设计模式

    创建设计模式 - 抽象工厂设计模式 欢迎来到java示例中的Abstract Factory Design Pattern.摘要工厂设计模式是创造模式之一.抽象工厂模式几乎类似于工厂模式,除了它更像工 ...

  8. [Head First设计模式]生活中学设计模式——组合模式

    系列文章 [Head First设计模式]山西面馆中的设计模式--装饰者模式 [Head First设计模式]山西面馆中的设计模式--观察者模式 [Head First设计模式]山西面馆中的设计模式- ...

  9. java 设计模式 示例_Java设计模式–示例教程

    java 设计模式 示例 Design Patterns are very popular among software developers. A design pattern is a well- ...

最新文章

  1. k8s概念入门之control-manager-针对1.1.版本阅读
  2. JS Math的几个方法使用实例
  3. 【大牛疯狂教学】java程序员大专找不到工作
  4. vscode设置键盘快捷键
  5. 百度网盘自动备份php,Linux定时备份数据到百度云盘
  6. PHP 常用函数及其它功能
  7. mysql漏洞包_MySQL npm包中的本地文件泄露漏洞
  8. 剑指offer_02
  9. 百度地图离线sdk java_百度地图SDK java.lang.UnsatisfiedLinkError: Couldn't load BaiduMapSDK...
  10. 1900页Python系列PPT分享六:面向对象程序设计(86页)
  11. 网页视频之win7家庭版配置IIS
  12. MODIS植被覆盖度
  13. 2021-03-31【Caltech行人数据集的 .vbb 转 .xml 】(学习记录)
  14. 芒果文件服务器,芒果服务器
  15. Smart原则和PDCA循环
  16. html与css笔记(旧)
  17. 计算机名加符号,最新带符号的网名
  18. 热乎乎的宇宙头条校招前端面经
  19. 知乎热榜“人脸安全”,这些博主怎么看
  20. 默默前行的livego--基于go语言的rtmp直播服务器

热门文章

  1. vux 实现多栏滚动
  2. Jquery 改变样式
  3. Android Fragment中ListView的OnItemClickListener无效
  4. sigsuspend sigprocmask函数的用法
  5. 如何解决 “ 段错误(吐核) ” ???
  6. 最常用git命令汇总(参考列表)
  7. 剑指offer 算法 (时间效率)
  8. c# GDI+简单绘图(二)
  9. bzoj1564: [NOI2009]二叉查找树
  10. 列表与表格的一些学习