10月21日

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

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

实验要求:

1.     画出对应的类图;

2.     提交源代码;

3. 注意编程规范。

实验内容:

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

    }

   

}

 

 

 

 

 

3.运行截图:

 

 

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

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

实验要求:

1.     画出对应的类图;

2.     提交源代码;

3. 注意编程规范。

实验内容:

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

    }

   

}

package org.example;


public class MementoPatternTest {
    public static void main(String[] args) {
        UserInfoDTO user=new UserInfoDTO();
        Caretaker c=new Caretaker();

        user.setAccount("
陈志峰");
        user.setPassword("123456");
        user.setTelNo("13635552412");
        System.out.println("
状态一:");
        user.show();
        c.setMemento(user.saveMemento());
        System.out.println("-----------------------------");

        user.setPassword("2222");
        user.setTelNo("22222222");
        System.out.println("
状态二:");
        user.show();
        c.setMemento(user.saveMemento());
        System.out.println("-----------------------------");

        user.setPassword("3333");
        user.setTelNo("33333333");
        System.out.println("
状态三:");
        user.show();
        c.setMemento(user.saveMemento());
        System.out.println("-----------------------------");

        user.setPassword("4444");
        user.setTelNo("44444444");
        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("-----------------------------");
    }
}

3.运行截图:

 
posted @   序章0  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示