java备忘录(memento)模式实现的示例代码
/**
* 数据对象
* @author stone
*
*/
public class datastate {
private string action;
public void setaction(string action) {
this.action = action;
}
public string getaction() {
return action;
}
}
/**
* 一个保存另外一个对象内部状态拷贝 的对象.这样以后就可以将该对象恢复到原先保存的状态.
*
* @author stone
*
*/
import java.io.file;
import java.io.serializable;
public class memento implements serializable {
/*private int number;
private file file = null;
public memento(originator o) {
this.number = o.getnumber();
this.file = o.getfile();
}
public int getnumber() {
return this.number;
}
public void setnumber(int number) {
this.number = number;
}
public file getfile() {
return this.file;
}
public void setfile(file file) {
this.file = file;
}
*/
private datastate state;
public memento(originator o) {
this.state = o.getstate();
}
public datastate getstate() {
return state;
}
public void setstate(datastate state) {
this.state = state;
}
}
public class originator {
/* private int number;
private file file = null;
public originator() {
}
// 创建一个memento,将自身作为参数传入
public memento getmemento() {
return new memento(this);
}
// 从memento中取出保存的数据,恢复为原始状态
public void setmemento(memento m) {
number = m.getnumber();
file = m.getfile();
}
public int getnumber() {
return number;
}
public void setnumber(int number) {
this.number = number;
}
public file getfile() {
return file;
}
public void setfile(file file) {
this.file = file;
}*/
private datastate state;
public originator() {
}
public originator(datastate state) {
this.state = state;
}
// 创建一个memento,将自身作为参数传入
public memento getmemento() {
return new memento(this);
}
// 从memento中取出保存的数据,恢复为原始状态
public void setmemento(memento m) {
/*
* getmemento() 创建的对象,保存在某个容器里,
* 当需要恢复时,将其传入当前方法, 再使用getstate(),得出
*/
this.state = m.getstate();
}
public datastate getstate() {
return state;
}
public void setstate(datastate state) {
this.state = state;
}
}
/*
* 备忘录(memento)模式 行为型模式
* 流程: memento用于保存 数据状态,
* originator用于 加载数据, 建立memento对象,及通过memento恢复原始数据
*/
public class test {
public static void main(string[] args) {
// originator originator = new originator();
// originator.setnumber(8);
//
// memento memento = originator.getmemento();
// system.out.println(memento.getnumber());
datastate state = new datastate();
state.setaction("copy a character");
originator originator = new originator();
system.out.println("创建原始数据");
originator.setstate(state);
system.out.println("创建备忘录对象, 保存原始数据状态");
memento memento = originator.getmemento();
system.out.println("创建了一个新数据");
originator.setstate(new datastate());
system.out.println("创建新数据后:" + originator.getstate().getaction());
/*
* memento 需要保存在某地,需要时取出,以恢复它内部所保存的数据
*/
system.out.println("创建新数据后,恢复原数据");
originator.setmemento(memento);
system.out.println(originator.getstate().getaction());
}
}
打印
创建原始数据
创建备忘录对象, 保存原始数据状态
创建了一个新数据
创建新数据后:null
创建新数据后,恢复原数据
copy a character
以上就是java备忘录(memento)模式实现的示例代码的详细内容。