员工实体类(源发器类):
package memo_mode; /** * 员工实体类(源发器类) */ public class Employee { private String name; private Integer age; private Double salary; /** * 进行备忘操作, 并返回备份(备忘录)对象 */ public EmployeeBackup backup(){ return new EmployeeBackup(this); } /** * 进行数据恢复, 恢复成指定备份(备忘录)对象的值 */ public void recovery(EmployeeBackup aEmployeeBackup){ this.name = aEmployeeBackup.getName(); this.age = aEmployeeBackup.getAge(); this.salary = aEmployeeBackup.getSalary(); } public Employee(String name, Integer age, Double salary) { this.name = name; this.age = age; this.salary = salary; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Double getSalary() { return salary; } public void setSalary(Double salary) { this.salary = salary; } }
员工备份类(备忘录类memento):
package memo_mode; /** * 员工备份类(备忘录类memento) */ public class EmployeeBackup { private String name; private Integer age; private Double salary; public EmployeeBackup(Employee aEmployee) { this.name = aEmployee.getName(); this.age = aEmployee.getAge(); this.salary = aEmployee.getSalary(); } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Double getSalary() { return salary; } public void setSalary(Double salary) { this.salary = salary; } }
负责人类:
package memo_mode; import java.util.ArrayList; import java.util.List; /** * 负责人类 * 负责管理备份(备忘录)对象 */ public class Caretaker { private EmployeeBackup backup; //支持堆zai结构 //private List<EmployeeBackup> list = new ArrayList<EmployeeBackup>(); public EmployeeBackup getBackup() { return backup; } public void setBackup(EmployeeBackup backup) { this.backup = backup; } }
测试代码:
package memo_mode; public class Client { public static void main(String[] args) { Caretaker caretaker = new Caretaker(); Employee employee = new Employee("zlp", new Integer(23), 3000D); System.out.println("第一次打印对象: " + employee.getName() + "---" + employee.getAge() + "---" + employee.getSalary()); caretaker.setBackup(employee.backup());//备忘一次, 并由负责人类保存 employee.setName("zzz"); employee.setAge(new Integer(28)); employee.setSalary(6000D); System.out.println("第二次打印对象: " + employee.getName() + "---" + employee.getAge() + "---" + employee.getSalary()); employee.recovery(caretaker.getBackup());//从负责人类中取, 恢复到备忘录对象保存的状态 System.out.println("第三次打印对象: " + employee.getName() + "---" + employee.getAge() + "---" + employee.getSalary()); } }
打印结果:
第一次打印对象: zlp---23---3000.0 第二次打印对象: zzz---28---6000.0 第三次打印对象: zlp---23---3000.0
谢谢声明出处!
转自: http://www.cnblogs.com/gscq073240/articles/7100381.html

浙公网安备 33010602011771号