软件设计实验 20:备忘录模式

发布时间 2023-11-28 22:18:12作者: STDU_DREAM

实验 20:备忘录模式

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

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

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

 

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

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

实验要求:

1. 提交源代码;

 

Memo.java
public class Memo {
    private String id;
    private String password;

    public Memo(String id, String password) {
        this.id = id;
        this.password = password;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

User.java
public class User {
    private String id;
    private String password;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Memo saveState(){
        return new Memo(id,password);
    }

    public void restoreState(Memo m){
        this.id = m.getId();
        this.password = m.getPassword();
    }

    public void show(){
        System.out.println("id:" + this.id);
        System.out.println("password:" + this.password);
    }
}

Caretaker.java
        import java.util.ArrayList;
        import java.util.List;

public class Caretaker {
    private List<Memo> list = new ArrayList<>();

    public void setMemo(Memo m){
        list.add(m);
    }

    public Memo getMemo(){
        Memo m = list.get( list.size() - 2 );
        list.remove( list.size() - 2 );
        return m;
    }
}

 

2. 注意编程规范。