首页 > 其他分享 >软件设计实验 20:备忘录模式

软件设计实验 20:备忘录模式

时间:2023-11-28 22:22:50浏览次数:34  
标签:20 String 软件设计 Memo public 备忘录 void password id

实验 20:备忘录模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 

1、理解备忘录模式的动机,掌握该模式的结构;

2、能够利用备忘录模式解决实际问题。

 

[实验任务一]:多次撤销

改进课堂上的“用户信息操作撤销”实例,使得系统可以实现多次撤销(可以使用HashMap、ArrayList等集合数据结构实现)。

实验要求:

1. 提交源代码;

 

Memo.java
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;
    }
}

User.java
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);
    }
}

Caretaker.java
        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;
    }
}

 

2. 注意编程规范。

 

 

标签:20,String,软件设计,Memo,public,备忘录,void,password,id
From: https://www.cnblogs.com/DREAM2021/p/17863262.html

相关文章

  • 软件设计实验19:中介者模式
    实验19:中介者模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解中介者模式的动机,掌握该模式的结构;2、能够利用中介者模式解决实际问题。 [实验任务一]:虚拟聊天室在“虚拟聊天室”实例中增加一个新的具体聊天室类和一个新的具体会员类,要求如下:1.新的具......
  • 软件设计实验 21:观察者模式
    实验21:观察者模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解观察者模式的动机,掌握该模式的结构;2、能够利用观察者模式解决实际问题。 [实验任务一]:股票提醒当股票的价格上涨或下降5%时,会通知持有该股票的股民,当股民听到价格上涨的消息时会买股票,当价......
  • 20231128 rock5b pwm驱动试玩
    根据https://doc.embedfire.com/linux/imx6/driver/zh/latest/linux_driver/pwm_sub_system.html使用rock5b开发板,radxa官方os,Macmini选择pin:现在pin5pwm14-M1 cd /usr/lib/linux-image-5.10.110-15-rockchip/rockchip/overlays 此文件夹里有rk3588......
  • Day20.模块的介绍_导入发生三件事_引用强调一_引用强调二_导入多个模块和规范_导入模
    1.模块的介绍:2.首次导入发生的三件事:3.引用强调一:4.引用强调二:5.导入多个模块和导入规范:6.导入模块的其他知识点: ......
  • 2023.11.28 随笔 了却君
    无聊。又来犯点无病呻吟之病。今日语文考时,绞尽脑汁,未背出下阙三、四段。特此默之,温习。《破阵子·为陈同甫赋壮词以寄之》辛弃疾醉里挑灯看剑,梦回吹角连营。八百里分麾下炙,五十弦翻塞外声。沙场秋点兵。马作的卢飞快,弓如霹雳弦惊。了却君王天下事,赢得生前身后名。可怜白发......
  • P8599 [蓝桥杯 2013 省 B] 带分数
    原文链接枚举即可#include<bits/stdc++.h>#definelllonglongusingnamespacestd;ints[14]={0};intmain(){lln;scanf("%lld",&n);for(inti=1;i<=9;i++)s[i]=i;llans=0;do{lla=0,b=0,c=0;fo......
  • Day20.匿名函数的两种调用方式_max用法_min用法_sorted用法_map用法_filter用法_reduc
    1.匿名函数的两种调用方式: 2.匿名函数求最大和求最小:3.sorted用法和map用法:4.filter的用法:5.reduce的用法:......
  • 复现LitCTF 2023的RE部分题
    [LitCTF2023]世界上最棒的程序员签到题pe查壳,无壳32位,拖入IDA中打开start函数[LitCTF2023]ez_XORpe查壳,无壳32位,拖入IDA中一道xor题,打开XOR函数编写脚本#include<stdio.h>#include<string.h>intmain(){ inti; constchar*s="E`}J]OrQF[V8zV:hzpV}fVF[t";......
  • 2023第十四届极客大挑战 — MISC WP
    Misc方向题解:来自本人cheekin请前往"三叶草小组Syclover"微信公众号输入flag获得flag 我的解答:关注公众号回复就可以得到一张图片,图片隐写zsteg即可。ez_smilemo游戏通关即可得到flag内容,需要自行添加`SYC{}`包含。例:flag内容为haha_haha则最终flag为SYC{haha_......
  • CVE-2018-2628
    WeblogicWLSCoreComponents反序列化命令执行漏洞(CVE-2018-2628)Oracle2018年4月补丁中,修复了WeblogicServerWLSCoreComponents中出现的一个反序列化漏洞(CVE-2018-2628),该漏洞通过t3协议触发,可导致未授权的用户在远程服务器执行任意命令。漏洞环境cdweblogic/CVE-2018-2......