40

实验 20:备忘录模式

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

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

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

 

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

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

实验要求:

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. 注意编程规范。

 

 

posted @ 2025-01-06 23:33  恋恋恋白  阅读(18)  评论(0)    收藏  举报