前言:
(早上出門前知道今天有大雨,但是卻沒有帶,現在外面下着大雨,我都不知道咋回去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());
}
}
實現結果: