一、备忘录(Memento)模式结构

备忘录对象是一个用来存储另外一个对象内部状态的快照(snapshot)的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉住,并外部化,存储起来,从而可以在将来适合的时候把这个对象还原到存储起来的状态。备忘录模式常常与命令模式和迭代子模式一同使用。

 备忘录模式的结构图如下所示

  aaarticlea/png;base64,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" alt="" />

备忘录模式涉及三个角色:备忘录(Memento)角色、发起人(Originator)角色、负责人(Caretaker)角色。

备忘录角色:

(1)       将发起人对象的内部状态存储起来,备忘录可以根据发起人对象的判断来决定存储多少发起人对象的内部状态。

(2)       备忘录可以保护其内容不被发起人对象之外的任何对象所读取。

备忘录有两个等效的接口:

窄接口:负责人(Caretaker)对象和其他除发起人对象之外的任何对象看到的是备忘录的窄接口(narrow interface),这个窄接口只允许它把备忘录对象传给其他对象。

宽接口:与负责人对象看到的窄接口相反的是,发起人对象可以看到一个宽接口(wide interface),这个宽接口允许它读取所有的数据,以便根据这些数据恢复这个发起人对象的内部状态。

发起人角色:

(1)       创建一个含有当前的内部状态的备忘录对象。(2)使用备忘录对象存储其内部状态。

负责人角色:

(1)       负责保存备忘录对象。(2)不检查备忘录对象的内容。


代码如下:

 public static void main(String[] args) {

         //发起者
Originator originator=new Originator();
Caretaker caretaker=new Caretaker();
originator.setState("a");
MementoIF mementoIF=originator.createMemento(); caretaker.saveMemento(mementoIF);
//改变状态
originator.setState("b");
System.out.println("当前state=="+originator.getState());
//恢复状态
mementoIF=caretaker.retrieveMemento();
originator.restoreMemento(mementoIF);
System.out.println("当前state=="+originator.getState());
} } interface MementoIF{}
//发起者
class Originator { private String state; public Originator(){} //创建一个备忘录
public MementoIF createMemento(){ return new Memento(this.state);
}
//将发起者恢复到备忘录对象记录的状态
public void restoreMemento(MementoIF mementoIF){ Memento memento=(Memento) mementoIF; this.state=memento.getState();
} public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
System.out.println("state="+state);
} //内部类 备忘录
class Memento implements MementoIF{
private String state;
public Memento(String state){
this.state=state; }
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
} }
}
//备忘录负责人
class Caretaker{ private MementoIF mementoIF; public MementoIF retrieveMemento(){ return this.mementoIF;
} public void saveMemento(MementoIF mementoIF){ this.mementoIF=mementoIF;
} }

执行结果:

state=a
state=b
当前state==b
当前state==a


二、多检查点备忘录

参考:http://www.cnblogs.com/java-my-life/archive/2012/06/06/2534942.html

三、备忘录模式在Java中的应用

J2EE框架中备忘录模式的应用

Java引擎提供Session对象,可以弥补HTTP协议的无状态缺点,存储用户的状态。当一个新的网络用户调用一张JSP网页或者Servlet时,Servlet引擎会创建一个对应于这个用户的Session对象,具体的技术细节可能是向客户端浏览器发送一个含有Session ID的Cookie,或者使用URL改写技术将Session ID 包括在URL中等。在一段有效时间里,同一个浏览器可以反复访问服务器,而Servlet引擎便可以使用这个Session ID来判断来访者应当与哪一个Session对象对应。Session和Cookie的使用都是备忘录模式,如下图所示:

四、备忘录模式的优缺点

优点:

1、  有时一些发起人对象的内部信息必须保存在发起人对象以外的地方,但是必须要由发起人对象自己读取。这时,使用备忘录可以把复杂的发起人内部信息对其他的对象屏弊起来,从而可以恰当地保持封装的边界。

2、  本模式简化了发起人类,发起人不再需要管理和保存其内部状态的一个个版本,客户端可以自行管理它们所需要的这些状态的版本。

3、  当发起人角色的状态改变的时候,有可能这个状态无效,这时候就可以使用暂时存储起来的备忘录将状态复原。

缺点:

1、  如果发起人角色的状态需要完整地存储到备忘录对象中,那么在资源消耗上面备忘录对象会很昂贵。

2、  当负责人角色将一个备忘录存储起来的时候,负责人可能并不知道这个状态会占用多大的存储空间,从而无法提醒用户一个操作是否会昂贵。

参考:

http://blog.csdn.net/fg2006/article/details/6575760

http://men4661273.iteye.com/blog/1633484

《JAVA与模式》之备忘录模式的更多相关文章

  1. 重学 Java 设计模式:实战备忘录模式「模拟互联网系统上线过程中,配置文件回滚场景」

    作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 实现不了是研发的借口? 实现不了,有时候是功能复杂度较高难以实 ...

  2. java设计模式-----21、备忘录模式

    概念: Memento模式也叫备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是GoF的23种设计模式之一,属于行为模式,它的作用是保存对象的内部状态,并在需要的时候(u ...

  3. Java设计模式学习记录-备忘录模式

    前言 这次要介绍的是备忘录模式,也是行为模式的一种 .现在人们的智能手机上都会有备忘录这样一个功能,大家也都会用,就是为了记住某件事情,防止以后自己忘记了.那么备忘录模式又是什么样子的呢?是不是和手机 ...

  4. Java设计模式(21)——行为模式之备忘录模式(Memento)

    一.概述 概念 UML简图 角色 根据下图得到角色 备忘录角色(Memento).发起人角色(Originator).负责人角色(Caretaker) 二.实践 使用白箱实现,给出角色的代码: 发起人 ...

  5. 《JAVA设计模式》之备忘录模式(Memento)

    在阎宏博士的<JAVA与模式>一书中开头是这样描述备忘录(Memento)模式的: 备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式. 备忘录 ...

  6. 《Android源码设计模式》--状态模式--责任链模式--解释器模式--命令模式--观察者模式--备忘录模式--迭代器模式

    [状态模式] No1: Wifi设置界面是一个叫做WifiSetting的Fragment实现的 No2: 在不同的状态下对于扫描Wifi这个请求的处理是完全不一样的.在初始状态下扫描请求被直接忽略, ...

  7. 设计模式20---设计模式之备忘录模式(Memento)(行为型)

    1.讲解备忘录模式 备忘录模式(Memento Pattern)又叫做快照模式(Snapshot Pattern)或Token模式,是GoF的23种设计模式之一,属于行为模式. 1.1定义 在不破坏封 ...

  8. 行为型模式(十) 备忘录模式(Memento)

    一.动机(Motivate) 我们看上图,一个对象肯定会有很多状态,这些状态肯定会相互转变而促进对象的发展,如果要想在某一时刻把当前对象回复到以前某一时刻的状态,这个情况用"备忘录模式&qu ...

  9. Head First设计模式——中介者模式和备忘录模式

    中介者 中介者模式:使用中介者来集中相关对象之间复杂的沟通方式和控制方式. Bob有一个自动屋,当他的闹钟响了只有,闹钟会告诉咖啡壶开始煮咖啡.后来客户不断的提出许多新需求:周末不要提供咖啡.下班后需 ...

  10. 设计模式---状态变化模式之备忘录模式(Memento)

    一:概念 用于保存对象的内部状态,并在需要的时候(undo/rollback)回复对象以前的状态 二:应用场景 如果一个对象需要保存状态并可通过undo或rollback等操作恢复到以前的状态时,可以 ...

随机推荐

  1. Docker Inspect

    1.Inspect结果详细信息 docker inspect 7988f914a122 其中7988f914a122是某一容器进程的id { "Id": "7988f91 ...

  2. C语言处理文件

    C写入数据到文件 #include <stdio.h> #include <string.h> int main( ) { FILE* fd = fopen("txt ...

  3. javascript基于原型的语言的特点

    一.基于原型的语言的特点 1 只有对象,没有类;对象继承对象,而不是类继承类. 2  “原型对象”是基于原型语言的核心概念.原型对象是新对象的模板,它将自身的属性共享给新对象.一个对象不但可以享有自己 ...

  4. 深度学习-Caffe编译测试的小总结

    1. 搭建的环境和代码:win7 64bit + vs2013+CUDA7.5 http://blog.csdn.net/thesby/article/details/50880802 2. 编译,制 ...

  5. Redis问题MISCONF Redis is configured to save RDB snapshots....

    Redis问题MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on di ...

  6. 用Putty连接连接Linux

    1:vi打开 [root@gechong]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 2:编辑IP地址 3:重启服务 [root@gechong /] ...

  7. 【Zookeeper】源码分析之请求处理链(三)之SyncRequestProcessor

    一.前言 在分析了PrepRequestProcessor处理器后,接着来分析SyncRequestProcessor,该处理器将请求存入磁盘,其将请求批量的存入磁盘以提高效率,请求在写入磁盘之前是不 ...

  8. GIT服务器实现web代码自动部署

    之前在一台vps服务器上面搭建了Git服务器,用来做代码管理,方便团队开发.但是问题也就相应的来了,使用git可以轻松的上传代码,而由于做的是web开发,每次还都得到服务器上把代码手动pull或者复制 ...

  9. Linux进程共享通信 -- mmap实现

    https://blog.csdn.net/y396397735/article/details/50651633 使用mmap内存映射实现一端写,另一端读的进程间通信 写端代码write.c /*w ...

  10. java 浮点运算

      CreateTime--2017年12月1日11:35:00 Author:Marydon java 浮点类型(float.double)间的运算工具类 /** * 进行BigDecimal对象的 ...