1700471015
e.printStackTrace();
1700471016
1700471017
}
1700471018
1700471019
return null;
1700471020
1700471021
}
1700471022
1700471023
}
1700471024
1700471025
可能你要发问了,这和备忘录模式的定义不相符,它定义是“在该对象之外保存这个状态”,而你却把这个状态保存在了发起人内部。是的,设计模式定义的诞生比Java的出世略早,它没有想到Java程序是这么有活力,有远见,而且在面向对象的设计中,即使把一个类封装在另一个类中也是可以做到的,何况一个小小的对象复制,这是它的设计模式完全没有预见到的,我们把它弥补回来。
1700471026
1700471027
再来看看Client是如何调用的,如代码清单24-15所示。
1700471028
1700471029
代码清单24-15 场景类
1700471030
1700471031
public class Client{
1700471032
1700471033
public static void main(String[]args){
1700471034
1700471035
//定义发起人
1700471036
1700471037
Originator originator=new Originator();
1700471038
1700471039
//建立初始状态
1700471040
1700471041
originator.setState(“初始状态……”);
1700471042
1700471043
System.out.println(“初始状态是:”+originator.getState());
1700471044
1700471045
//建立备份
1700471046
1700471047
originator.createMemento();
1700471048
1700471049
//修改状态
1700471050
1700471051
originator.setState(“修改后的状态……”);
1700471052
1700471053
System.out.println(“修改后状态是:”+originator.getState());
1700471054
1700471055
//恢复原有状态
1700471056
1700471057
originator.restoreMemento();
1700471058
1700471059
System.out.println(“恢复后状态是:”+originator.getState());
1700471060
1700471061
}
1700471062
1700471063
}
1700471064
[
上一页 ]
[ :1.700471015e+09 ]
[
下一页 ]