备忘录模式(java版)

原创 2016年08月28日 15:55:52

1.引入

备忘录模式的核心就是再不破坏其封装性的条件下,捕获一个对象的内部状态,然后使用备忘录保存这个状态,然后就可以随便修改了,如果想要恢复其原内部状态,那么就直接用备忘录恢复原内部状态。

2.举例

在网页设计中,我们拿到别人前端设计的网页,如果我们直接就修改,那么恢复是不可能的。所以我们可以先把别人的前端网页先另保存一份在磁盘上,然后拿着原别人的前端网页开始随意修改了,如果我们想要恢复到原网页,那么直接使用磁盘的备份就可以了。而这就是备忘录模式,其实就是三步,第一步初始化,第二步备份,第三步恢复

3.实现

--3.1.原网页的样式类:

public class Original {

        //背景颜色
	private String backgroundColor;
	//字体大小
        private String fontSize;
	//字体样式
        private String fontStyle;
	
	public Original(String backgroundColor,String fontSize,String fontStyle){
		this.backgroundColor=backgroundColor;
		this.fontSize=fontSize;
		this.fontStyle=fontStyle;
	}
	public String getBackgroundColor() {
		return backgroundColor;
	}
	public void setBackgroundColor(String backgroundColor) {
		this.backgroundColor = backgroundColor;
	}
	public String getFontSize() {
		return fontSize;
	}
	public void setFontSize(String fontSize) {
		this.fontSize = fontSize;
	}
	public String getFontStyle() {
		return fontStyle;
	}
	public void setFontStyle(String fontStyle) {
		this.fontStyle = fontStyle;
	}
	
	public Memento createMemento(){
		return new Memento(backgroundColor,fontSize,fontStyle);
	}
	
	public void restoreMemento(Memento memento){
		this.backgroundColor=memento.getBackgroundColor();
		this.fontSize=memento.getFontSize();
		this.fontStyle=memento.getFontStyle();
	}
	
}


--3.2.备份网页样式类:

public class Memento {

	private String backgroundColor;
	private String fontSize;
	private String fontStyle;
	
	public Memento(String backgroundColor,String fontSize,String fontStyle){
		this.backgroundColor=backgroundColor;
		this.fontSize=fontSize;
		this.fontStyle=fontStyle;
	}
	public String getBackgroundColor() {
		return backgroundColor;
	}
	public void setBackgroundColor(String backgroundColor) {
		this.backgroundColor = backgroundColor;
	}
	public String getFontSize() {
		return fontSize;
	}
	public void setFontSize(String fontSize) {
		this.fontSize = fontSize;
	}
	public String getFontStyle() {
		return fontStyle;
	}
	public void setFontStyle(String fontStyle) {
		this.fontStyle = fontStyle;
	}
	
}

--3.3.存储备份样式类(磁盘):

public class Storage {

	private Memento memento;

	public Storage(Memento memento){
		this.memento=memento;
	}
	public Memento getMemento() {
		return memento;
	}

	public void setMemento(Memento memento) {
		this.memento = memento;
	}
	
}

--3.4.测试类:

public class Test {

	public static void main(String[] args) {
		Original original =new Original("红色","24px","宋体");
		Storage storage=new Storage(original.createMemento());
		
		System.out.println("初始化状态:");
		System.out.println(original.getBackgroundColor()+","+original.getFontSize()+","+original.getFontStyle());
		original.setBackgroundColor("黑色");
		original.setFontSize("18px");
		original.setFontStyle("微软雅黑");
		System.out.println("修改后状态:");
		System.out.println(original.getBackgroundColor()+","+original.getFontSize()+","+original.getFontStyle());
		original.restoreMemento(storage.getMemento());
		System.out.println(original.getBackgroundColor()+"-"+original.getFontSize()+"-"+original.getFontStyle());
	}
}

结果:

初始化状态:
红色,24px,宋体
修改后状态:
黑色,18px,微软雅黑
红色-24px-宋体

------------------------------------------------------------------------------------------------------------------

总结:

备忘录模式就是先初始化一个对象的状态,然后将这个状态保存成备份,当下次修改之后想要回到原状态,就用备份恢复就完事了。


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

设计模式学习笔记---备忘录模式memento pattern(Java版)

一、场景 录入大批人员资料,当正在录入当前人资料时,发现上一个人录错了 此时需要恢复上一个人的资料,再进行修改。 Word文档编辑时,忽然电脑死机或断电,再打开时可以看到word 提示你恢复到...

Java设计模式-备忘录

  • 2015-01-25 01:25
  • 11KB
  • 下载

Java 实现备忘录(Memento)模式

/** * 数据对象 * @author stone * */ public class DataState { private String action; public void s...

java 备忘录模式

做做笔记吧.... 备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 适用场景: 1、保存一...

java备忘录模式

备忘录(Memento)模式又称标记(Token)模式。GOF给备忘录模式的定义为:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态...

java备忘录模式

Originator(发起者):负责创建一个Memento,用以记录当前时刻它的内部状态,并可以使用Memento恢复他的内部状态。Originator可以根据需要决定Memento存储Orignat...

java设计模式(四)——单例、观察者、代理、备忘录、工厂

一、Singleton单例模式 Singleton单例模式是最简单的设计模式,它的主要作用是保证在程序运行生命周期中,使用了单类模式的类只能有一个实例对象存在。 1、饱汉模式,声明时就创建实例...

java备忘录模式

**备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式。 备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下...

java Memento(备忘录模式)

备忘录模式(Memento) 属于对象的行为模式。         备忘录模式是我觉得最容易理解的一种模式,它的名字取得非常的贴切。 1. 定义      ...

JAVA -备忘录设计模式

备忘录模式是一种软件设计模式:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 备忘录模式(Memento Pattern...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)