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

实验 20:备忘录模式

时间:2023-12-09 20:59:04浏览次数:32  
标签:account telNo 20 String 备忘录 实验 user password public

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

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

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

 

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

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

实验要求:

1. 提交源代码;

2. 注意编程规范。

package org.example.shiyan20;

public class main {
    public static void main(String args[]) {
        UserInfoDTO user = new UserInfoDTO();
        Caretaker c = new Caretaker();
        user.setAccount("zhangsan");
        user.setPassword("123456");
        user.setTelNo("130000");
        System.out.println("状态一:");
        user.show();
        c.addMemento(user.saveMemento());
        System.out.println("-----------------");

        user.setPassword("111111");
        user.setTelNo("130111");
        System.out.println("状态二:");
        user.show();
        c.addMemento(user.saveMemento());
        System.out.println("-----------------");

        user.setPassword("222222");
        user.setTelNo("130222");
        System.out.println("状态三:");
        user.show();
        System.out.println("-----------------");

        user.restoreMemento(c.preMemento());
        System.out.println("回到状态二:");
        user.show();
        System.out.println("-----------------");

        user.restoreMemento(c.preMemento());
        System.out.println("回到状态一:");
        user.show();
        System.out.println("-----------------");
    }
}

//Caretaker.java
package org.example.shiyan20;
public class Caretaker
{
    private Memento[] array = null;
    private int index;
    private Memento memento;
    public Memento getMemento()
    {
        return memento;
    }
    public void setMemento(Memento memento)
    {
        this.memento=memento;
    }
    public Caretaker(){
        array = new Memento[10];
        index = 0;
    }
    public void addMemento(Memento Memento){
        array[index++] = Memento;
    }
    public Memento preMemento(){
        Memento pop = null;
        try {
            pop = array[--index];
        } catch (Exception e) {
            e.printStackTrace();
        }
        return pop;
    }
}

package org.example.shiyan20;

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;
    }
}

package org.example.shiyan20;

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("账号是" + this.account);
        System.out.println("密码是" + this.password);
        System.out.println("电话是" + this.telNo);
    }
}

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

相关文章

  • 实验19:中介者模式
    本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解中介者模式的动机,掌握该模式的结构;2、能够利用中介者模式解决实际问题。 [实验任务一]:虚拟聊天室在“虚拟聊天室”实例中增加一个新的具体聊天室类和一个新的具体会员类,要求如下:新的具体聊天室中发送的图片......
  • 实验 21:观察者模式
    本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解观察者模式的动机,掌握该模式的结构;2、能够利用观察者模式解决实际问题。 [实验任务一]:股票提醒当股票的价格上涨或下降5%时,会通知持有该股票的股民,当股民听到价格上涨的消息时会买股票,当价格下降时会大哭一场......
  • 实验 22:状态模式
    本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解状态模式的动机,掌握该模式的结构;2、能够利用状态模式解决实际问题。 [实验任务一]:银行账户用Java代码模拟实现课堂上的“银行账户”的实例,要求编写客户端测试代码模拟用户存款和取款,注意账户对象状态和行为的......
  • 2023-12-9
    <template><el-menu:default-openeds="['1','3']"style="min-height:100%;overflow-x:hidden;"background-color="rgb(48,68,86)"text-color="#fff"router......
  • 实验15:职责链模式
    本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解职责链模式的动机,掌握该模式的结构;2、能够利用职责链模式解决实际问题。 [实验任务一]:财务审批某物资管理系统中物资采购需要分级审批,主任可以审批1万元及以下的采购单,部门经理可以审批5万元及以下的采购单,副......
  • 实验16:命令模式
    本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解命令模式的动机,掌握该模式的结构;2、能够利用命令模式解决实际问题。 [实验任务一]:多次撤销和重复的命令模式某系统需要提供一个命令集合(注:可以使用链表,栈等集合对象实现),用于存储一系列命令对象,并通过该命令集......
  • 实验14:代理模式
    [实验任务一]:婚介所婚介所其实就是找对象的一个代理,请仿照我们的课堂例子“论坛权限控制代理”完成这个实际问题,其中如果年纪小于18周岁,婚介所会提示“对不起,不能早恋!”,并终止业务。实验要求:1. 提交类图;、2.提交源代码;3.注意编程规范。packageorg.example;publicclas......
  • 2023-12-8
    2023-12-8在vpdiv2的时候遇见了一道题Problem-D-Codeforces找不到看得懂的题解,但是大体应该是用的数论知识。正好趁这个机会补补数论的东西。学习文章算法学习笔记27:素数筛法【埃氏筛法、线性筛法】-知乎(zhihu.com)#include<bits/stdc++.h>#defineendl'\n'usi......
  • 2023-2024-1 20231410刘珈岐《计算机基础与程序设计》第11周学习总结
    2023-2024-120231410刘珈岐《计算机基础与程序设计》第11周学习总结作业信息这个作业属于哪个课程(https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP)这个作业要求在哪里(https://www.cnblogs.com/rocedu/p/9577842.html#WEEK11)这个作业的目标自学教材《......
  • 学期2023-2024-1 20231401 《计算机基础与程序设计》第十一周学习总结
    学期2023-2024-120231401《计算机基础与程序设计》第十一周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计)这个作业要求在哪里2023-2024-1计算机基础与程序设计第十一周作业这个作业的目标自学计算机科学概论第15,16章,《C语言程序设计......