首页 > 编程语言 >备忘录模式--Java实现

备忘录模式--Java实现

时间:2023-11-23 09:22:05浏览次数:29  
标签:account userInfoDTO Java String -- 备忘录 password public Memento

具体代码

//Memento.java
package org.example.test018;

public class Memento {
    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;
    }

    private String account;
    private String password;
    private String telNo;
}

//UserInfoDTO.java
package org.example.test018;

public class UserInfoDTO {
    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;
    }

    private String account;
    private String password;
    private String 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);
    }
}

//Caretaker.java
package org.example.test018;

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

//Client.java
package org.example.test018;

import javax.security.auth.login.CredentialException;

public class Client {
    public static void main(String[] args) {
        UserInfoDTO userInfoDTO = new UserInfoDTO();
        Caretaker caretaker = new Caretaker();

        userInfoDTO.setAccount("zhangsan");
        userInfoDTO.setPassword("123456");
        userInfoDTO.setTelNo("1300000000");
        System.out.println("状态一:");
        userInfoDTO.show();
        caretaker.addMemento(userInfoDTO.saveMemento());
        System.out.println("------------------");

        userInfoDTO.setPassword("111111");
        userInfoDTO.setTelNo("13000000001");
        System.out.println("状态二:");
        userInfoDTO.show();
        caretaker.addMemento(userInfoDTO.saveMemento());
        System.out.println("-------------------");

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

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

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

运行结果

标签:account,userInfoDTO,Java,String,--,备忘录,password,public,Memento
From: https://www.cnblogs.com/liuzijin/p/17850815.html

相关文章

  • 蓝桥杯 不高兴的津津
    #include<bits/stdc++.h>using namespace std;int main(){  int n[7],m[7],sum=0;  for(int i=0;i<7;++i)  {    cin >> n[i] >> m[i];    if(n[i]+m[i]>8)    {      sum++;      cout << i+1;      break;   ......
  • 11.23实验19
    实验19:中介者模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解中介者模式的动机,掌握该模式的结构;2、能够利用中介者模式解决实际问题。[实验任务一]:虚拟聊天室在“虚拟聊天室”实例中增加一个新的具体聊天室类和一个新的具体会员类,要求如下:1.新的具体聊天室中......
  • Xshell连接不上虚拟机的解决办法汇总
    一:关于ping的问题1.虚拟机ping百度2.windows下pinglinux的ip地址3.linux下pingwindows二:防火墙的问题三:ssh服务四:VM中的还原默认设置还原后的更改设置五:相关服务是否打开六:卸载VM软件重装一:关于ping的问题1.虚拟机ping百度在虚拟机中ping百度看能不能先ping通,......
  • 11.23实验20
    实验20:备忘录模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解备忘录模式的动机,掌握该模式的结构;2、能够利用备忘录模式解决实际问题。[实验任务一]:多次撤销改进课堂上的“用户信息操作撤销”实例,使得系统可以实现多次撤销(可以使用HashMap、ArrayList等集合数......
  • 回归任务和分类任务,重要性度量的计算方式
    在随机森林中,对于回归任务和分类任务,重要性度量的计算方式是不同的。回归任务:使用的是 %IncMSE 和 IncNodePurity。%IncMSE:这是一个基于均方误差(MeanSquaredError,MSE)的度量。当我们对某个变量进行排列时,预测误差的增加程度被用作该变量的重要性度量。如果对预测结果影响......
  • matlab的函数.m文件
    函数建立function [A]=name(参数1,参数2);‘’‘return;end保存为M文件,开头不要有多余的东西,不然就算在一个路径下,也无法识别函数名;也不是函数名和M文件名相同的问题,再说局部函数也不能同名。比如前面加个清理内存的东西clear;function [A]=name(参数1,参数2)...end这咋用都......
  • 45岁颜宁当选中国科学院院士
    45岁颜宁当选中国科学院院士  ·2022年11月1日,颜宁在“2022深圳全球创新人才论坛”上宣布将辞去普林斯顿大学教职,回国协助创建深圳医学科学院(简称SMART,英文有“聪明”之意)。11月22日,据中国科学院网站公告,2023年中国科学院选举产生了59名中国科学院院士,著名结构......
  • strncmp源码,及其在含0x00字符数组中的使用问题
    源码结论,strncmp不能在比较字符数组中同一位置可能均为0x00时使用。#include<string.h>intSTRNCMP(constchar*s1,constchar*s2,size_tn){unsignedcharc1='\0';unsignedcharc2='\0';if(n>=4){size_tn4=n>&......
  • 番外-软件设计(15)
    在“虚拟聊天室”实例中增加一个新的具体聊天室类和一个新的具体会员类,要求如下:1.新的具体聊天室中发送的图片大小不得超过20M。2.新的具体聊天室中发送的文字长度不得超过100个字符。3.新的具体会员类可以发送图片信息和文本信息。4.新的具体会员类在发送文本信息时,可以......
  • Misc_XCTF_WriteUp | 坚持60s
    题目(一个jar文件分析运行了一下,是一个躲绿帽的游戏,掐点过了60s,什么也没有:……可恶,被骗了人生的60s(握拳)用010Editor打开,发现是zip压缩包的文件头(查了一下好像jar文件本身就是压缩文件),解压缩得到文件源码:检查完image文件夹中的所有图片素材,没有找到flag。将......