首页 > 其他分享 >备忘录模式

备忘录模式

时间:2023-11-23 15:02:17浏览次数:33  
标签:account String 模式 备忘录 user password public Memento

多次撤销

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

实验要求:

1. 提交源代码;

Caretaker.java

package ruanshe20;

 

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;

    }

}

main.java

package ruanshe20;

 

public class main {

    public static void main(String args[]) {

        UserinfoDTO user = new UserinfoDTO();

        Caretaker c = new Caretaker();

        user.setAccount("九十七");

        user.setPassword("hashdhasdh123");

        user.setTelNo("asdad132");

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

        user.show();

        c.addMemento(user.saveMemento());

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

 

        user.setPassword("489a231");

        user.setTelNo("7894561");

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

        user.show();

        c.addMemento(user.saveMemento());

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

 

        user.setPassword("16548921");

        user.setTelNo("4653132");

        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("-----------------");

    }

}

Memento.java

package ruanshe20;

 

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;

    }

}

 

UserinfoDTO.java

package ruanshe20;

 

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,String,模式,备忘录,user,password,public,Memento
From: https://www.cnblogs.com/mine-my/p/17851553.html

相关文章

  • 界面组件Telerik UI for WinForms中文教程 - 创建明暗模式的桌面应用
    黑暗模式现在在很多应用程序中都挺常见的,但如何在桌面应用程序中实现它呢?这很简单,本文将为大家介绍如何使用一个类和命令行调用来实现!TelerikUIforWinForms拥有适用WindowsForms的110多个令人惊叹的UI控件。所有的UIforWinForms控件都具有完整的主题支持,可以轻松地帮助开发......
  • 设计模式--单例模式
    为了保证关键类只有一个对象,不允许用户自己构建此类对象。用户可以直接访问。意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。主要解决:一个全局使用的类频繁地创建与销毁。何时使用:当您想控制实例数目,节省系统资源的时候。如何解决:判断系统是否已经有这个单例,如果有则返......
  • Flask-debug模式
    不开debug模式的问题修改源代码需要重启程序才会生效程序出错没有错误的详细信息,不利于排查分析开启debug模式 终端执行:pythonapp.py  ......
  • socket 的阻塞模式和非阻塞模式
    1.socket的阻塞模式和非阻塞模式在阻塞和非阻塞模式下,常讨论的具有不同行为表现的socket函数一般有connect、accept、send和recv。在Linux上对socket进行操作时也包括write函数和read函数。在Linux上,可以使用fcntl函数或ioctl函数给创建的socket增加ON......
  • 设计模式
    美团弟弟快看工厂模式(https://www.ddkk.com/zhuanlan/design/java/5.html)策略模式(https://www.ddkk.com/zhuanlan/design/java/27.html)......
  • 学习随笔(设计模式:状态模式)
    内容今天学习了设计模式中的状态模式。1.状态模式,当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。收获1.如果软件中需要用很多枚举表示不同的状态,那么就可以采用状态模式,可以让代码变得更简单,新增状态时扩展性也会更好。2.先抽象出所有状态的基类......
  • 设计模式(十四)命令
    一、定义将一个请求封装为一个对象,从而可以用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作(Action)模式或事物(Transaction)模式。二、描述命令模式的本质是对请求进行封装,一个请求对应一个命令,将发出命......
  • 中介者模式--Java实现
    具体代码//AbstractChatroom.javapackageorg.example.test017;importjavax.swing.plaf.basic.BasicTreeUI;publicabstractclassAbstractChatroom{publicabstractvoidregister(Membermember);publicabstractvoidsendText(Stringfrom,Stringto,Str......
  • 备忘录模式--Java实现
    具体代码//Memento.javapackageorg.example.test018;publicclassMemento{publicStringgetAccount(){returnaccount;}publicvoidsetAccount(Stringaccount){this.account=account;}publicStringgetPassword(){......
  • 学习随笔(设计模式:抽象工厂模式)
    内容今天学习了抽象工厂模式。1.抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。2.听起来有一些复杂,主要实现的功能就是在尽可能保证开放-封闭的原则下兼容具体的抽象动作。3.最终可以采用配置文件+反射+抽象工厂来实现对抽象产品的设......