软件设计模式————(备忘录模式)
[实验任务一]:多次撤销
改进课堂上的“用户信息操作撤销”实例,使得系统可以实现多次撤销(可以使用HashMap、ArrayList等集合数据结构实现)。
实验要求:
1. 画出对应的类图;
2. 提交源代码;
package org.example; import java.util.ArrayList; import java.util.List; public class Caretaker { private List<Memo> list = new ArrayList<>(); public void setMemo(Memo m){ list.add(m); } public Memo getMemo(){ Memo m = list.get( list.size() - 2 ); list.remove( list.size() - 2 ); return m; } } package org.example; public class Client { public static void main(String[] args) { User user = new User(); Caretaker caretaker = new Caretaker(); user.setId("20223794"); user.setPassword("123456"); caretaker.setMemo(user.saveState()); System.out.println("状态一"); user.show(); System.out.println("************************************************************"); user.setId("20223794"); user.setPassword("dadvgfb"); caretaker.setMemo(user.saveState()); System.out.println("状态二"); user.show(); System.out.println("************************************************************"); user.setId("20223794"); user.setPassword("safdvfv"); caretaker.setMemo(user.saveState()); System.out.println("状态三"); user.show(); System.out.println("************************************************************"); System.out.println("逐步撤销操作:"); System.out.println("恢复到状态二"); user.restoreState(caretaker.getMemo()); user.show(); System.out.println("************************************************************"); System.out.println("恢复到状态一"); user.restoreState(caretaker.getMemo()); user.show(); } } package org.example; public class Memo { private String id; private String password; public Memo(String id, String password) { this.id = id; this.password = password; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } package org.example; public class User { private String id; private String password; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Memo saveState(){ return new Memo(id,password); } public void restoreState(Memo m){ this.id = m.getId(); this.password = m.getPassword(); } public void show(){ System.out.println("id:" + this.id); System.out.println("password:" + this.password); } }