首页 > 其他分享 >40

40

时间:2025-01-06 23:57:16浏览次数:1  
标签:String System 40 user println public out

实验 20:备忘录模式

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

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

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

 

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

改进课堂上的“用户信息操作撤销”实例,使得系统可以实现多次撤销(可以使用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. 注意编程规范。

 

 

标签:String,System,40,user,println,public,out
From: https://www.cnblogs.com/wanbeibei/p/18656552

相关文章

  • msvcp140.dll跑丢啦!快来看看msvcp140.dll丢失的解决方法将其找回
    在使用电脑时,我们可能会遇到提示缺少msvcp140.dll的错误信息。这个提示意味着我们的电脑中缺少MSVCP140.dll这个文件,它是某些程序运行所必需的。如果我们遇到这个问题,应该如何解决呢?本文将详细解析如何解决msvcp140.dll丢失的问题,帮助大家快速解决这个问题。一,了解msvcp140.......
  • GA/T1400视图库平台EasyCVR小知识:如何评估现有监控系统的技术状况?
    在当今社会,随着技术的不断发展和安全需求的日益提高,监控系统在各个领域的应用越来越广泛。为了确保监控系统的有效性和可靠性,定期对其技术状况进行全面评估是非常必要的。通过对监控系统的系统功能、性能、安全性、硬件设备、软件系统以及维护管理等方面的细致检查与分析,可以及时......
  • 【S32DS项目实战系列】项目工程外设 之 C40_IP组件
    前言:前面新建了一个工程但是没有任何驱动配置,接下来就教大家配置一下外设驱动的C40_IP1,文件自定义管理在S32DSIDE安装的目录下面的找到一下头文件,并复制到自建的文件夹里面用于自己建立的RTD库当中,当然这个是为了方面进行文件管理2,C40_IP组件简单介绍一下C40_IP组件......
  • 电脑盲如何选购笔记本避免被坑?很简单,不用别人教你也能搞定.240108
     经常有人问伟哥,笔记本电脑该如何选购。其实很简单,一是看预算,二是到某东看预算范围内的热销电脑,闭眼选就是。笔记本现在也是消费品了,没那么多讲究。 当然,如果要显得你自己更加专业或更加有逼格一点,那,在笔记本选购中,要注意两点:CPU和硬盘。 硬盘很好说,现在这时代,一定是固态......
  • docker部署最新6.2版Zabbix Server端.240103
    一、安装docker,参见本博客docker安装文档。二、启动空的mysql-eMYSQL_DATABASE="zabbix"\-eMYSQL_USER="zabbix"\-eMYSQL_PASSWORD="zabbix_pwd1234"\-eMYSQL_ROOT_PASSWORD="root_pwd12345"\-p3306:3......
  • 云计算真的很便宜吗?.240103
    ​37Signals的首席技术官DavidHeinemeierHansson表示,2022年一共在AWS(亚马逊云)花了3,201,564美元,即每月266,797美元。其中759,983美元都花费在AWS的EC2和EKS服务服务计算上面。Heinemeier指出,即使是这个账单,也是团队共同努力保持costdown的结果。“这已经是一个高度优化的预算!......
  • Just keep scaling!思维链作者Jason Wei 40分钟讲座剖析LLM扩展范式
    关注AI领域的人对JasonWei这个名字一定不陌生。他是OpenAI的一位资深研究科学家,也常在OpenAI的发布活动中露脸。更重要的是,他是思维链概念开山之作《Chain-of-ThoughtPromptingElicitsReasoninginLargeLanguageModels》的第一作者。他本科毕业就加入了谷歌......
  • openEuler欧拉部署Redis.240108
    一、系统优化关闭防火墙systemctlstopfirewalldsystemctldisablefirewalld关闭selinuxsed-ri's/SELINUX=enforcing/SELINUX=disabled/'/etc/selinux/configsetenforce0​二、安装Redisdnf-yinstallredisvim/etc/redis.conf#bind127.0.0.1bind0.0.0.0pr......
  • docker部署RocketMQ.240108
    ​RocketMQ是阿里巴巴2016年MQ中间件,使用java语言开发,在阿里内部,RocketMQ承接了例如“双11”等高并发场景的消息流转,能够处理亿万级别的消息处理。RocketMQ各角色介绍Producer:消息的发送者Consumer:消息的接收者Broker:暂存和传输消息,如:邮局NameServer:管理Bro......
  • openEuler欧拉部署Harbor.240108
    ​一、系统优化关闭防火墙systemctlstopfirewalldsystemctldisablefirewalld二、安装Harborwgethttps://github.com/goharbor/harbor/releases/download/v2.8.1/harbor-offline-installer-v2.8.1.tgztarxvfharbor-offline-installer-v2.8.1.tgzdf-hmvharbor//ho......