java设计模式—备忘录模式
一.概述
备忘录模式是指将对象的某个状态作为历史记录保存起来以便于在某些情况下可以恢复,如文本编辑的撤销,数据库的回滚等。
二.应用场景
1.文本编辑的撤销
2.数据库的回滚
3.浏览器的后退
4.代码管理器svn
三.模式示例:
我们以SVN代码版本管理为例,具体讲解备忘录模式实现过程,代码如下:
1.创建版本信息类
public class SvnState {
private String state;
public SvnState(String state){
this.state = state;
}
public String getState(){
return state;
}
}
2.创建版本信息操作类
public class SvnStateOpt {
private String state;
public void setState(String state){
this.state = state;
}
public String getState(){
return state;
}
public SvnState saveStateToState(){
return new SvnState(state);
}
public void getStateFromState(SvnState svnState){
state = svnState.getState();
}
}
3.创建版本信息管理类
public class SvnCareTaker {
private List<SvnState> stateList = new ArrayList<SvnState>();
public void add(SvnState state){
stateList.add(state);
}
public SvnState get(int index){
return stateList.get(index);
}
}
4.模式调用
public class Test {
public static void main(String[] args) {
SvnStateOpt originator = new SvnStateOpt();
SvnCareTaker careTaker = new SvnCareTaker();
originator.setState("1.0");
careTaker.add(originator.saveStateToState());
originator.setState("2.0");
careTaker.add(originator.saveStateToState());
System.out.println("当前版本号: " + originator.getState());
originator.getStateFromState(careTaker.get(0));
System.out.println("第一个版本号: " + originator.getState());
originator.getStateFromState(careTaker.get(1));
System.out.println("第二个版本号: " + originator.getState());
}
}