您好,欢迎访问一九零五行业门户网

Java备忘录(Memento)模式实现的示例代码

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)模式实现的示例代码的详细内容。
其它类似信息

推荐信息