1700471393
1700471394
我们先来说一个名词,检查点(Check Point),也就是你在备份的时候做的戳记,系统级的备份一般是时间戳,那我们程序的检查点该怎么设计呢?一般是一个有意义的字符串。
1700471395
1700471396
我们只要把通用代码中的Caretaker管理员稍做修改就可以了,如代码清单24-20所示。
1700471397
1700471398
代码清单24-20 备忘录管理员
1700471399
1700471400
public class Caretaker{
1700471401
1700471402
//容纳备忘录的容器
1700471403
1700471404
private HashMap<String,Memento>memMap=new HashMap<String,Memento>();
1700471405
1700471406
public Memento getMemento(String idx){
1700471407
1700471408
return memMap.get(idx);
1700471409
1700471410
}
1700471411
1700471412
public void setMemento(String idx,Memento memento){
1700471413
1700471414
this.memMap.put(idx,memento);
1700471415
1700471416
}
1700471417
1700471418
}
1700471419
1700471420
把容纳备忘录的容器修改为Map类型就可以了,场景类也稍做改动,如代码清单24-21所示。
1700471421
1700471422
代码清单24-21 场景类
1700471423
1700471424
public class Client{
1700471425
1700471426
public static void main(String[]args){
1700471427
1700471428
//定义出发起人
1700471429
1700471430
Originator originator=new Originator();
1700471431
1700471432
//定义出备忘录管理员
1700471433
1700471434
Caretaker caretaker=new Caretaker();
1700471435
1700471436
//创建两个备忘录
1700471437
1700471438
caretaker.setMemento(“001”,originator.createMemento());
1700471439
1700471440
caretaker.setMemento(“002”,originator.createMemento());
1700471441
1700471442
//恢复一个指定标记的备忘录
[
上一页 ]
[ :1.700471393e+09 ]
[
下一页 ]