1700463646
1700463647
public abstract void find();
1700463648
1700463649
//被要求增加功能
1700463650
1700463651
public abstract void add();
1700463652
1700463653
//被要求删除功能
1700463654
1700463655
public abstract void delete();
1700463656
1700463657
//被要求修改功能
1700463658
1700463659
public abstract void change();
1700463660
1700463661
//被要求给出所有的变更计划
1700463662
1700463663
public abstract void plan();
1700463664
1700463665
//每个接收者都要对直接执行的任务可以回滚
1700463666
1700463667
public void rollBack(){
1700463668
1700463669
//根据日志进行回滚
1700463670
1700463671
}
1700463672
1700463673
}
1700463674
1700463675
仅仅增加了一个rollBack的方法,每个接收者都可以对自己实现的任务进行回滚。怎么回滚?根据事务日志进行回滚!新增加的一个命令CancelDeletePageCommand实现撤销刚刚发出的删除命令,如代码清单15-21所示。
1700463676
1700463677
代码清单15-21 撤销命令
1700463678
1700463679
public class CancelDeletePageCommand extends Command{
1700463680
1700463681
//撤销删除一个页面的命令
1700463682
1700463683
public void execute(){
1700463684
1700463685
super.pg.rollBack();
1700463686
1700463687
}
1700463688
1700463689
}
1700463690
1700463691
然后就是用Invoker进行调用了,客户选择了执行这个撤销动作,就可以进行撤销操作,该示意代码确实比较简单,真正实现起来那是异常复杂的,为什么呢?事务日志处理是非常繁琐的处理机制,想想数据库的日志处理吧,你就能想象出这个日志有多复杂!
1700463692
1700463693
1700463694
1700463695
[
上一页 ]
[ :1.700463646e+09 ]
[
下一页 ]