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

实验 20:备忘录模式

时间:2024-11-20 08:56:55浏览次数:1  
标签:account telNo 20 String 备忘录 实验 user password public

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

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

实验要求:

1. 画出对应的类图;

2. 提交源代码;

3. 注意编程规范。

1. 类图

 2.源代码

 

import java.util.ArrayList;
import java.util.List;
 
public class Caretaker
{
 
    private Memento memento;
    private List<Memento> mementos = new ArrayList<Memento>();
 
    //从备忘录中获取
    public Memento getMemento()
    {
        memento = mementos.get(mementos.size() - 1);
        mementos.remove(mementos.size() - 1);
        return memento;
    }
 
    //设置备忘录
    public void setMemento(Memento memento)
    {
        this.memento = memento;
        mementos.add(memento);
    }
}
 
 
class Memento
{
    private String account;
    private String password;
    private String telNo;
 
    public Memento(String account, String password, String telNo)
    {
        this.account = account;
        this.password = password;
        this.telNo = telNo;
    }
 
    public String getAccount()
    {
        return account;
    }
 
    public void setAccount(String account)
    {
        this.account = account;
    }
 
    public String getPassword()
    {
        return password;
    }
 
    public void setPassword(String password)
    {
        this.password = password;
    }
 
    public String getTelNo()
    {
        return telNo;
    }
 
    public void setTelNo(String telNo)
    {
        this.telNo = telNo;
    }
}
 
//用户信息
class UserInfoDTO
{
    private String account;
    private String password;
    private String telNo;
 
    public String getAccount()
    {
        return account;
    }
 
    public void setAccount(String account)
    {
        this.account = account;
    }
 
    public String getPassword()
    {
        return password;
    }
 
    public void setPassword(String password)
    {
        this.password = password;
    }
 
    public String getTelNo()
    {
        return telNo;
    }
 
    public void setTelNo(String telNo)
    {
        this.telNo = telNo;
    }
 
    public Memento saveMemento()
    {
        return new Memento(account, password, telNo);
    }
 
    public void restoreMemento(Memento memento)
    {
        this.account = memento.getAccount();
        this.password = memento.getPassword();
        this.telNo = memento.getTelNo();
    }
 
    public void show()
    {
        System.out.println("账户:" + this.account);
        System.out.println("密码:" + this.password);
        System.out.println("电话:" + this.telNo);
    }
}
 
 
public class Client
{
    public static void main(String[] args)
    {
        UserInfoDTO user = new UserInfoDTO();
        Caretaker c = new Caretaker();
 
        user.setAccount("gaoxuan1");
        user.setPassword("123456");
        user.setTelNo("13000000000");
        System.out.println("状态一:");
        user.show();
        //保存备忘录
        c.setMemento(user.saveMemento());
        System.out.println("---------------------------");
 
        user.setPassword("111111");
        user.setTelNo("13100001111");
        System.out.println("状态二:");
        user.show();
        //保存备忘录
        c.setMemento(user.saveMemento());
        System.out.println("---------------------------");
 
        user.setPassword("222222");
        user.setTelNo("13200002222");
        System.out.println("状态三:");
        user.show();
        //保存备忘录
        c.setMemento(user.saveMemento());
        System.out.println("---------------------------");
 
        user.restoreMemento(c.getMemento());
        user.restoreMemento(c.getMemento());
        System.out.println("回到状态二:");
        user.show();
        System.out.println("---------------------------");
        user.restoreMemento(c.getMemento());
        System.out.println("回到状态一:");
        user.show();
        System.out.println("---------------------------");
    }
}

 

运行截图

 

标签:account,telNo,20,String,备忘录,实验,user,password,public
From: https://www.cnblogs.com/po3a/p/18556033

相关文章

  • 实验 21:观察者模式
    [实验任务一]:股票提醒当股票的价格上涨或下降5%时,会通知持有该股票的股民,当股民听到价格上涨的消息时会买股票,当价格下降时会大哭一场。实验要求:1. 画出对应类图;2. 提交源代码;3. 注意编程规范。1.类图 2.源代码importjava.util.ArrayList;//观察目标类publicc......
  • 昊星新品发布会以三大主张、四大新品开创实验室安全新纪元
    【2024年11月19日,上海】    珠海昊星自动化系统有限公司(以下简称“昊星”)在2024年慕尼黑上海分析生化展上成功举办新品发布会。本次发布会深入展示了昊星在“匠心、创新、智慧化”方面的融合实践,彰显了昊星在实验室气流控制领域的技术实力和产品优势。多位行业专家出席......
  • P10304 [THUWC 2020] 道路修建
    注意到\(1\)到一个\(b\)子树内的点\(x\)的路径可以拆成\(1\top\toq\tox\)的形式,其中\(1\top\)走树边,\(p\toq\)为在点\(p\)从树边走出去,在点\(q\)走回来,然后\(q\)再走树边走到\(x\)。考虑\(f_i\)为最小的\(d\),满足断掉\(i\)深度为\(d\)的祖先到\(i......
  • 活着就好20241119
    今天是19号,周二,亲爱的朋友们,大家早上好!在告别了昨天并迎来这个全新而又充满希望的周二早晨,让我们带着周一的余韵,怀揣着新的目标和梦想,继续前行在这美好而又充实的一天里吧!......
  • 2000-2021年上市公司重污染行业认定与测算数据政策文件及DO文件汇总(5.2万条数据)
    上市公司重污染行业认定测算数据政策文件和DO文件可以用于进行以下类型的研究:环境政策分析:这些文件可以帮助研究人员了解ZF或监管机构对于重污染行业的监管政策和措施。研究可以包括政策的历史演变、目标和目标的设定,以及监管的严格程度。行业影响分析:研究可以分析这些政......
  • Newstarctf2024 Week3 Reverse-SecertsOfKawaii
    下载附件,是一个apk文件想着用夜神模拟器打开,但是说什么与版本不兼容,懒得再去配置了直接放到jeb里分析吧,因为不知道这个apk运行起来长啥样,就随便点点找启动类(java学的不太好哈哈)看到了一个onclick,应该是输入flag后,通过onclick调用类似“check”是否相等点击这个lambda$.........
  • 2024-11-18--vue
    vue常用指令vue生命周期vue案例......
  • 20222318 2024-2025-1 《网络与系统攻防技术》实验六实验报告
    1.实验内容1.1实验要求掌握Metasploit的使用方法:“Search——Use——Show——Set——Exploit/run”。1.2实验任务(1)前期渗透(2)Vsftpd源码包后门漏洞(21端口)(3)SambaMS-RPCShell命令注入漏洞(端口139)(4)JavaRMISERVER命令执行漏洞(1099端口)(5)PHPCGI参数执行注入漏洞(80端口)1.3......
  • 2024/11/19语法整理
    look的用法1.Look可以表示“看”呀,就像你说“Lookatthatbird!”(看那只鸟!),这是很基础的用法呢。2.“Havealook”也是常用的搭配呀,比如“Let'shavealookatthisbook."(让我们看看这本书。),是不是很简单易懂呀!3.Look还能和“like”一起用呢,“Itlookslikerain......
  • 河南工大2024新生周赛(4)——命题人:马贺
    A:DokiDokiLiteratureClub!直接输出就可以了。#include<stdio.h>intmain(){printf("JustMonika!");return0;}B:君と彼女と彼女の恋∵y最大可以等于x∴gcd(x,y)最大=x直接输出2∗x即可#include<stdio.h>intmain(){intx;scanf("%d",......