备忘录模式---多次撤销

今天做了备忘录模式---多次撤销的实验,用了差不多两个小时的时间,理解了备忘录模式的原理,下面是备忘录模式的简介以及实验要求和实现。

多次撤销

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

代码部分:

 

package 实验20备忘录模式;

 

import java.util.ArrayList;

 

public class Caretaker
{
private Memento memento;

private ArrayList mementolist = new ArrayList();
public Memento getMemento(int i) {
return (Memento)mementolist.get(i);
}
public void setMemento(Memento memento) {
mementolist.add(memento);
}
}

 

package 实验20备忘录模式;

public class Client
{
public static void main(String a[])
{
UserInfoDTO user=new UserInfoDTO();
Caretaker c=new Caretaker();
int index=0;
user.setAccount("zhangsan");
user.setPassword("123456");
user.setTelNo("13000000000");
System.out.println("状态一:");

user.show();
c.setMemento(user.saveMemento());//保存备忘录
System.out.println("---------------------------");
index++;
user.setPassword("111111");
user.setTelNo("13100001111");
System.out.println("状态二:");
user.show();
c.setMemento(user.saveMemento());//保存备忘录
System.out.println("---------------------------");
index++;

user.setPassword("555555");
user.setTelNo("13100005555");
System.out.println("状态三:");
user.show();

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

for(int i=index-1;i>=0;i--)
{
int j=i+1;
user.restoreMemento(c.getMemento(i));//从备忘录中恢复
System.out.println("回到状态:"+j);
user.show();
System.out.println("---------------------------");
}
}
}

 

package 实验20备忘录模式;

 

class Memento
{
private String account;
private String password;
private String telNo;
public Memento()
{

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

}

 

package 实验20备忘录模式;

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

 

posted @ 2021-10-16 22:29  潘福龙  阅读(145)  评论(0编辑  收藏  举报