命令模式,数据库事务,命令的撤销恢复
来源:互联网 发布:丁丁办公软件 编辑:程序博客网 时间:2024/06/16 22:38
命令模式(COMMAND),又称动作(Action),事务(Transaction),通过将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,实现对请求排队或记录请求日志,以及支持可撤销的操作。命令模式可以将请求发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。
一、使用场景
1、需要抽象出待执行的动作以参数化某对象时。这种参数化机制在过程语言中是通过回调函数表达式实现的,Command模式则是回调机制的一个面向对象的替代品。
2、在不同的时刻指定、排列和执行请求。一个Command对象可以有一个与初始请求无关的生存期,你完全可以将请求的命令对象传递给另一个不同的进程并在那实现该请求。
3、支持取消操作。在Command的execute操作执行前将状态存储到一个历史列表中,通过向后和向前遍历该列表并分别调用undo和redo方法来实现数量不限的“取消”和"重做"。
4、支持修改日志,当系统崩溃时可以用于修改的重做,以便复原崩溃前状态。在Command接口中可以加入装载和存储操作,用来将系统修改持久化到日志文件。系统恢复只需从日志文件中读入修改记录,然后使用Command的execute重新执行它们即可。
5、用构建在原语操作上的高层操作构造一个系统,比如支持事务的信息系统。一个事务封装了对数据的一组变动,Command模式提供了对事务进行建模的方法。Command提供的公共的接口,可以用来以一致的方式调用所有事务。同时使用命令模式也易于添加新事务以扩展系统。
二、UML图
注: 命令模式的关键在于引入了抽象命令类,请求发送者针对抽象命令类编程,只有实现了抽象命令类的具体命令才与请求接收者相关联。
三、Java实现
运行结果:四、模式优缺点
优点:
1、降低系统耦合度。Command模式将调用操作的对象与知道如何实现该操作的对象解耦。
2、增加新的Command很容易,无需改变已有的类,扩展性强。
3、可以将多个命令装配成一个复合命令(宏命令)。
4、为请求的撤销(Undo)和重做(Redo)提供了一种设计和实现方案。
缺点:
1、对于复杂的系统,可能会导致大量具体命令类的产生。
转载于:http://blog.csdn.net/qbg19881206/article/details/18503469
- 命令模式,数据库事务,命令的撤销恢复
- 命令模式--撤销恢复
- 【GOF23设计模式】_命令模式_数据库事务机制底层架构实现_撤销和回复JAVA246
- vi的撤销命令
- vi的撤销命令
- vi中撤销与恢复命令
- 命令模式+备忘录模式,实现可撤销重做的计算器
- postgresql 数据库的备份与恢复(命令模式)
- 命令模式-宏命令+状态撤销
- 通过命令模式备份和恢复数据库
- 使用命令模式实现简单的支持撤销的计算器
- vim-2 删除命令、数字的奥义、撤销和恢复命令
- Unity中使用命令模式,实现撤销、回放的操作
- DB2恢复数据库命令
- 命令模式 X 可撤销的操作 X 改善容易混乱的命令
- MySQL数据库的备份恢复命令
- 备份恢复MySQL数据库的命令
- 备份恢复MySQL数据库的命令
- [bzoj3275]Number
- Android分包(MultiDex)后编译加速方案,项目加速编译
- Java中的Filter过滤器
- C#excel 文件上传并进行分页
- 我的第一篇文章 无病呻吟
- 命令模式,数据库事务,命令的撤销恢复
- 拆分字符串
- JAVA 工具类
- 图像处理---二义性、通路长度、Dm距离的概念
- js中数组与字符串的相互转化
- JZOJ3630. 【汕头市选2014】分叉(fork)
- 设计模式读书笔记----装饰者模式
- 在vim上实现跳转到定义处的方法
- Redis学习笔记