备忘录(Memento)模式又称标记(Token)模式。GOF给备忘录模式的定义为:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
/**
* 发起人角色
*/
public class Originator {
private String state;
/**
* 工厂方法返回一个新备忘录对象
*/
public MementoIF createMemento() {
return new Memento(this.state);
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
System.out.println("Current state is " + this.state);
}
/**
* 将发起人恢复到备忘录对象记录的状态
*/
public void restoreMemento(MementoIF memento) {
Memento aMemento = (Memento) memento;
this.setState(aMemento.getSavedState());
}
/**
* 内部成员类,备忘录
*/
protected class Memento implements MementoIF {
private String savedState;
public Memento(String someState) {
this.savedState = someState;
}
public String getSavedState() {
return savedState;
}
public void setSavedState(String savedState) {
this.savedState = savedState;
}
}
}
public interface MementoIF {
}
/**
* 负责人角色
*/
public class Caretaker {
private MementoIF memento;
/**
* 备忘录的取值方法
*/
public MementoIF retrieveMemento() {
return this.memento;
}
/**
* 备忘录的赋值方法
*/
public void saveMemento(MementoIF memento) {
this.memento = memento;
}
}
public class Client {
//发起人
private static Originator originator = new Originator();
//负责人
private static Caretaker caretaker = new Caretaker();
public static void main(String[] args) {
//设置发起人对象状态
originator.setState("ON");
//创建备忘录对象将这个对象存储起来
caretaker.saveMemento(originator.createMemento());
//改变发起人对象状态
originator.setState("OFF");
//恢复发起人对象状态
originator.restoreMemento(caretaker.retrieveMemento());
}
}
分享到:
相关推荐
设计模式之备忘录模式 设计模式之备忘录模式 设计模式之备忘录模式 设计模式之备忘录模式 设计模式之备忘录模式
这是运用Memento设计模式,设计的一个简单实例, 你可以通过工具栏选择绘制不同图形,使用备份创建备忘录,然后选择恢复进行绘制图形的恢复。 http://blog.csdn.net/ziyuanxiazai123/article/details/12421265
备忘录模式.rar备忘录模式.rar备忘录模式.rar
java设计模式-备忘录模式源代码, 源码中为设计模式的工程源文件,已经测试过,没有问题。
设计模式-备忘录模式(讲解及其实现代码)
备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。 备忘录模式java demo
设计模式之备忘录模式的Java版本实现和UML类设计图
设计模式专题之(十九)备忘录模式--设计模式备忘录模式示例代码(python--c++)
ios平台下备忘录模式最初简代码讲解何为备忘录模式,相关博客http://blog.sina.com.cn/s/blog_161d504630102wxis.html
C#面向对象设计模式纵横谈(21):(行为型模式) Memento 备忘录模式
备忘录模式C++实现,若理解有误,请留言指出。
Java设计模式,备忘录模式的Demo,具体的思想与实现有很多讲得很好的老师,我是看厉风行老师的视频学的,讲得不错,简单易懂
备忘录模式在不破坏封装的前提下,记录一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态,本例中设置历次成绩,并记录和保存,最后返回最好成绩
iOS 设计模式 备忘录模式
java常用设计模式-备忘录模式
设计模式-备忘录模式
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段...
备忘录(Memento)模式又叫作快照(Snapshot)模式或Token模式,是一种对象的行为模式。在备忘录模式里,一个备忘录是一个对象,它存储另一个对象(备忘录的原发器)在某个瞬间的内部状态。备忘的目的就是为了以后在需要...
备忘录设计模式,可用于简单的学习!
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到保存的状态。