package designpattern.memento; public class Student { private String name;// 姓名 private String major;// 專業 private String studentNo;// 學號 public Student(String name, String major, String studentNo) { super(); this.name = name; this.major = major; this.studentNo = studentNo; } public Memento createMemento() { return new Memento(this.name, this.major); } public void restoreMemento(Memento memento) { this.name = memento.getName(); this.major = memento.getMajor(); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getMajor() { return major; } public void setMajor(String major) { this.major = major; } public String getStudentNo() { return studentNo; } public void setStudentNo(String studentNo) { this.studentNo = studentNo; } @Override public String toString() { return "Student [name=" + name + ", major=" + major + ", studentNo=" + studentNo + "]"; } }
package designpattern.memento; public class Memento { private String name; private String major; public Memento(String name, String major) { super(); this.name = name; this.major = major; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getMajor() { return major; } public void setMajor(String major) { this.major = major; } }
package designpattern.memento; public class CareTaker { private Memento memento; public Memento getMemento() { return memento; } public void setMemento(Memento memento) { this.memento = memento; } }
package designpattern.memento; public class Client { public static void main(String[] args) { Student student = new Student("郝鑫仁", "計算機", "1234"); CareTaker careTaker = new CareTaker(); careTaker.setMemento(student.createMemento()); System.out.println(student); System.out.println("開始點名..."); // 假裝成其餘同窗 student.setName("齊步萊"); student.setMajor("自動化"); System.out.println(student); System.out.println("點名結束"); // 變回本身 student.restoreMemento(careTaker.getMemento()); System.out.println(student); } }
Student [name=郝鑫仁, major=計算機, studentNo=1234] 開始點名... Student [name=齊步萊, major=自動化, studentNo=1234] 點名結束 Student [name=郝鑫仁, major=計算機, studentNo=1234]