前言:
(早上出门前知道今天有大雨,但是却没有带,现在外面下着大雨,我都不知道咋回去o(╥﹏╥)o,哎自作自受)
有时候在使用软件的时候可以进行撤回,即恢复原来的状态,这就使用了备忘录模式。就是将实体类对象复制一份交给专门管理的对象
目录
一、代码实现:
一、类结构图
二、具体实现
- Emp:
package Mementor; import java.util.Set; //实体类对象 public class Emp { private String name; private int age; public Emp(String name, int age, int salary) { super(); this.name = name; this.age = age; this.salary = salary; } private int salary; public Empmementor setEmp() { return new Empmementor(this); } //进行数据恢复 public void recovery(Empmementor empmementor) { this.age=empmementor.getAge(); this.name=empmementor.getName(); this.salary=empmementor.getSalary(); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getSalary() { return salary; } public void setSalary(int salary) { this.salary = salary; } }
- Empmementor:
package Mementor; //相当于复制类对象 public class Empmementor { private String name; private int age; private int salary; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getSalary() { return salary; } public void setSalary(int salary) { this.salary = salary; } Empmementor(Emp emp) { // TODO 自动生成的构造函数存根 this.name=emp.getName(); this.age=emp.getAge(); this.salary=emp.getSalary(); } }
-
Tacker:
package Mementor; //管理存储的对象 public class Tacker { private Empmementor empmementor; public Empmementor getEmpmementor() { return empmementor; } public void setEmpmementor(Empmementor empmementor) { this.empmementor = empmementor; } }
调用类:Client:
package Mementor;
import javax.sql.rowset.CachedRowSet;
public class Client {
public static void main(String[] args) {
Tacker tacker=new Tacker();
Emp emp=new Emp("张扬",18,900);
System.out.println("第一次打印相关的内容"+emp.getName()+"----"+emp.getAge()+"-----"+emp.getSalary());
tacker.setEmpmementor(emp.setEmp());
emp.setAge(100);
emp.setSalary(9000);
System.out.println("第二次打印相关的内容"+emp.getName()+"----"+emp.getAge()+"-----"+emp.getSalary());
emp.recovery(tacker.getEmpmementor());
//还原相关的信息
System.out.println("第三次打印相关的内容(恢复之后的数据)"+emp.getName()+"----"+emp.getAge()+"-----"+emp.getSalary());
}
}
实现结果: