博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式学习笔记(20)——备忘录模式
阅读量:5941 次
发布时间:2019-06-19

本文共 1543 字,大约阅读时间需要 5 分钟。

  hot3.png

一、模式定义

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

二、模式结构

Originator类:被备份的类,负责生成备份和还原备份

Memento类:用来存储Originator中要备份的属性

CareTaker类:负责存储Memento备份

三、模式实现

public class Originator {		private String value;		public String getValue() {		return value;	}	public void setValue(String value) {		this.value = value;	}	public Originator(String value) {		this.value = value;	}	public Memento createMemento(){		return new Memento(value);	}		public void restoreMemento(Memento memento){		this.value = memento.getValue();	}}
public class Memento {		private String value;	public Memento(String value) {		this.value = value;	}	public String getValue() {		return value;	}	public void setValue(String value) {		this.value = value;	}}
public class CareTaker {		private Memento memento;		public CareTaker(Memento memento) {		this.memento = memento;	}	public Memento getMemento() {		return memento;	}	public void setMemento(Memento memento) {		this.memento = memento;	}}
public class Test {	public static void main(String[] args) {				// 创建原始类		Originator origi = new Originator("egg");		// 创建备忘录		CareTaker storage = new CareTaker(origi.createMemento());		// 修改原始类的状态		System.out.println("初始化状态为:" + origi.getValue());		origi.setValue("niu");		System.out.println("修改后的状态为:" + origi.getValue());		// 回复原始类的状态		origi.restoreMemento(storage.getMemento());		System.out.println("恢复后的状态为:" + origi.getValue());	}}

四、使用场景        

             1.需要保存和恢复数据的相关状态场景。

        2.提供一个可回滚的操作,比如说各种编辑器中的Ctrl+Z组合键。

        3.需要监控的副本场景中。

        4.数据库连接的事务管理就是用的备忘录模式。

转载于:https://my.oschina.net/jewill/blog/418648

你可能感兴趣的文章
华为eNSP和SecureCRT连接乱码问题
查看>>
dedecms 页面无刷新调取
查看>>
电脑开机老是显示explorer.exe文件损坏
查看>>
Onenote 2010 多PC端笔记同步
查看>>
数据结构概览之第八章排序
查看>>
android input设备event处理以及hotplug检测
查看>>
广播搜寻服务器的动态IP
查看>>
centos6 64位服务器的基本初始化
查看>>
我的友情链接
查看>>
windows8不能更新?
查看>>
SQL*PLUS的异常处理-SP2-0606
查看>>
[转] SAAS, PAAS, IAAS
查看>>
linux常用命令详解
查看>>
Linux下的LVM创建以及Linux快照卷
查看>>
生活随笔与读书笔记20140302
查看>>
性能分析:hash索引导致delete慢
查看>>
IPSEC ×××主模式的九个包交换
查看>>
Kooboo CMS - Html.FrontHtml.Position 详解
查看>>
(原创)我对未来的人类的发展,以及AI技术发展的一些思考。
查看>>
Exchange-OWA与域控集成-实现单点登录
查看>>