实体类用于信息存储,同时定义备份和还原的方法
//学生信息存储实体类
public class Student {
//学生姓名,编号,所属班级
private String sname;
private String sid;
private String className;
//构造器
public Student(String sname, String sid, String className) {
super();
this.sname = sname;
this.sid = sid;
this.className = className;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
@Override
public String toString() {
return "姓名:"+sname+" "+"编号:"+sid+" "+"班级名称:"+className;
}
//定义一个备忘的方法
public Memento memento() {
return new Memento(this);
}
//恢复数据,恢复成备忘录记录的值
public void recovery(Memento m) {
this.sname=m.getSname();
this.sid=m.getSid();
this.className=m.getClassName();
}
}
备忘录类,保存学生实体类的信息
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
//备忘录类
public class Memento {
private String sname;
private String sid;
private String className;
//保存学生信息
public Memento(Student s) {
super();
this.sname =s.getSname();
this.sid = s.getSid();
this.className = s.getClassName();
//新建xml文件用来保存每一次备忘的内容
Properties p=new Properties();
p.setProperty("学生姓名", sname);
p.setProperty("学生编号", sid);
p.setProperty("班级名称", className);
try {
p.storeToXML(new FileOutputStream(new File("文件3.xml")), "测试文件","GBK");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
}
管理者类,保持对备忘录类的引用,可以用list容器来存放多个备忘点
//管理者
public class Manager {
//保持对备忘录类的引用
private Memento memento;
public Memento getMemento() {
return memento;
}
public void setMemento(Memento memento) {
this.memento = memento;
}
}
客户端类
public class Client {
public static void main(String[] args) {
Manager m=new Manager();
Student s=new Student("张三","123","软件一班");
//信息打印
System.out.println(s.toString());
//备份
System.out.println("-->进行备份---");
m.setMemento(s.memento());
//重置数据
s.setSname("李四");
s.setSid("456");
s.setClassName("软件二班");
System.out.println("-->数据发生改变----");
System.out.println(s.toString());
//恢复数据
System.out.println("-->回到备份点----");
s.recovery(m.getMemento());
System.out.println(s.toString());
}
}