备忘录模式(java)

备忘录模式:多次撤销

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

(1)Caretaker.java

package shiyan20;

import java.util.ArrayList;

public class Caretaker {

 private ArrayList<Memento> mementos= new ArrayList<Memento>();

 public Memento getMemento(int i)

 {      

 return (Memento)mementos.get(i);    

 }

    

 public void setMemento(Memento memento)

 {   

 mementos.add(memento);

 }     

}

(2)Client.java

package shiyan20;

public class Client {

public static void main(String a[]){

    UserInfoDTO user=new UserInfoDTO();

    Caretaker taker = new Caretaker();

    user.setAccount("zhangsan");

    user.setPassword("123456");

    user.setTelNo("13000000000");

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

    taker.setMemento(user.saveMemento());

    user.show();

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

    user.setPassword("111111");

    user.setTelNo("13100001111");

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

    user.show();

    taker.setMemento(user.saveMemento());

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

    user.setPassword("222222");

    user.setTelNo("13100001111");

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

    user.show();

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

    System.out.println("回到状态二");

    user.restoreMemento(taker.getMemento(1));

    user.show();

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

    System.out.println("回到状态一");

    user.restoreMemento(taker.getMemento(0));

    user.show();

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

    }

}

(3)Memento.java

package shiyan20;

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

    }

}

(4)UserInfoDTO.java

package shiyan20;

/*

 * 用户信息类

 */

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

    }

}

实现截图:

原文地址:https://www.cnblogs.com/marr/p/15598604.html