软件设计模式————(备忘录模式)
1.软件设计模式————(简单工厂模式)2.软件设计模式————(工厂方法模式)3.软件设计模式————(抽象工厂模式)4.软件设计模式————(建造者模式)5.软件设计模式————(原型模式)6.软件设计模式————(单例模式)7.软件设计模式————(适配器模式)8.软件设计模式————(桥接模式)9.软件设计模式————(组合模式)10.软件设计模式————(装饰模式)11.软件设计模式————(外观模式)12.软件设计模式————(享元模式)13.软件设计模式————(代理模式)14.软件设计模式————(命令模式)15.软件设计模式————(解释器模式)16.软件设计模式————(迭代器模式)17.软件设计模式————(中介者模式)
18.软件设计模式————(备忘录模式)
19.软件设计模式————(观察者模式)20.软件设计模式————(职责链模式)[实验任务一]:多次撤销
改进课堂上的“用户信息操作撤销”实例,使得系统可以实现多次撤销(可以使用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); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix