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

11.21实验 20:备忘录模式

时间:2024-12-02 12:56:38浏览次数:5  
标签:20 String 11.21 System 备忘录 user println public out

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

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

实验要求:

1. 画出对应的类图;

 

 

2. 提交源代码;

import java.util.ArrayList;

import java.util.List;

 

public class Caretaker {

    private List<Memento> list=new ArrayList<>();

    public Memento getMemento() {

        Memento mm=list.get(list.size()-2);

        list.remove(list.size()-2);

        return mm;

    }

    public void setMemento(Memento memento) {

        list.add(memento);

    }

}

 

 

public class Memento {

    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(String account, String password, String telNo) {

        this.account = account;

        this.password = password;

        this.telNo = telNo;

    }

    

}

 

public 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("Account:"+this.account);

        System.out.println("Password:"+this.password);

        System.out.println("TelNo:"+this.telNo);

    }

    

}

 

public class Client {

 

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        UserInfoDTO user=new UserInfoDTO();

        Caretaker c=new Caretaker();

        

        user.setAccount("zhangsan");

        user.setPassword("123456");

        user.setTelNo("1310000000");

        System.out.println("状态一:");

        user.show();

        c.setMemento(user.saveMemento());

        System.out.println("-----------------------------");

        

        user.setPassword("111111");

        user.setTelNo("1310001111");

        System.out.println("状态二:");

        user.show();

        c.setMemento(user.saveMemento());

        System.out.println("-----------------------------");

        

        user.setPassword("zyx666");

        user.setTelNo("15733333333");

        System.out.println("状态三:");

        user.show();

        c.setMemento(user.saveMemento());

        System.out.println("-----------------------------");

        

        user.setPassword("777777");

        user.setTelNo("15511111111");

        System.out.println("状态四:");

        user.show();

        c.setMemento(user.saveMemento());

        System.out.println("-----------------------------");

        

        user.setPassword("666666");

        user.setTelNo("17455555555");

        System.out.println("状态五:");

        user.show();

        c.setMemento(user.saveMemento());

        System.out.println("-----------------------------");

        

        

        user.restoreMemento(c.getMemento());

        System.out.println("回到状态四:");

        user.show();

        System.out.println("-----------------------------");

        

        user.restoreMemento(c.getMemento());

        System.out.println("回到状态三:");

        user.show();

        System.out.println("-----------------------------");

        

        user.restoreMemento(c.getMemento());

        System.out.println("回到状态二:");

        user.show();

        System.out.println("-----------------------------");

        

        user.restoreMemento(c.getMemento());

        System.out.println("回到状态一:");

        user.show();

        System.out.println("-----------------------------");

    }

 

}

3. 注意编程规范。

 

 

标签:20,String,11.21,System,备忘录,user,println,public,out
From: https://www.cnblogs.com/yindantong/p/18581643

相关文章

  • 华水967数据结构2005真题---选择题部分
    一.选择题1.在数据结构中,从逻辑上可以把数据结构分成()。A、动态结构和静态结构B、紧凑结构和非紧凑结构C、线性结构和非线性结构D、内部结构和外部结构答案:C解析:A.动态结构和静态结构:这个分类更多地涉及到数据结构的可变性,而不是其逻辑组织形式。动态结构通常指可......
  • 2024年值得推荐的6款 Vue 后台管理系统模板,开源且免费!
    https://www.cnblogs.com/Can-daydayup/p/18579652 思维导航前言适合后端程序员的前端框架vue-element-adminNaiveUiAdminAntDesignVueProArcoDesignProVuevue-pure-adminTDesignVueNextStarter前言在现今的软件开发领域,Vue.js凭借其高效、灵活......
  • HONEYWELL 逻辑板QCS 05442200
    逻辑板简述逻辑板又称:"控制板”在液晶电视里的作用和CRT中的视放板相当,但有实质的区别,逻辑板不是一个纯粹的信号放大器,它输入是LVDS格式信号,而不是RGB。逻辑板也称TCON板作用是把数字板送来的LVDS或TTL图像数据信号,时钟信号停止处置移位存放器存储将图像数据信号,时钟信号转换......
  • 最新 Navicat Premium 17激活永久教程2024
    本文对于navicat16、17全部版本也是支持激活的一、官网下载安装包:https://www.navicat.com.cn/download/navicat-premium 二、安装NavicatPremium16或者NavicatPremium17 注意:安装完后不要打开已打开自行退出 三、破解补丁下载安装包+激活工具领取->微信关注公众......
  • CF2034F2 Khayyam's Royal Decree (Hard Version)
    把问题改写成在网格图上走,一个红球或蓝球对应了网格图上的一条边。最后只要把答案除以\(\dbinom{n+m}{m}\)即可。价值\(\times2\)不好表示,考虑把带\(2^c\)倍价值的球看成一个球和\(2^c-1\)个“复制品”。每次使用道具相当于将每个球都复制一遍。考虑对于每个道具,计算......
  • [Tricks-00005][NOIp2024]树上查询 思维方式还是要数形结合!
    题目链接。有一个经典结论是,在\(l<r\)的时候,\(dep_{\operatorname{LCA}(l,l+1,\dots,r)}=\min\limits_{i=l}^{r-1}dep_{\operatorname{LCA}(i,i+1)}\),证明也十分容易。特判掉\(k=1\)的特殊情况后,问题则可以转化成:有一个序列\(d_i=dep_{\operatorname{LCA}(i,i+1)}\),求\(\m......
  • 软件著作权申请教程(超详细)(2024新版)软著申请
                       目录一、注册账号与实名登记二、材料准备三、申请步骤1.办理身份2.软件申请信息3.软件开发信息4.软件功能与特点5.填报完成一、注册账号与实名登记    首先我们需要在官网里面注册一个账号,并且完成实名认证,一般是注......
  • 【2024-12-01】连岳摘抄
    23:59日子未必会永远这样,你的人生有可能突然绽放花朵,这种事是有可能发生的。                                                 ——乔治桑德女性,工作家庭更难两全,这......
  • 【2024-11-29】不想安排
    20:00每一天,我们都活在一种未被我们察觉到的奇迹中,蓝天、白云、青草,还有孩子清澈的眼睛,全都是一种奇迹。                                                 ——一行禅师......
  • # 学期(如2024-2025-1) 学号(如:20241402) 《计算机基础与程序设计》第11周学习总结
    学期(如2024-2025-1)学号(如:20241402)《计算机基础与程序设计》第11周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标<写上......