Command命令设计模式
执行一步操作后,回滚或撤销
public abstract class Command {public abstract void doit(); //exec runpublic abstract void undo();
}
public class Content {String msg = "hello everybody ";
}
public class CopyCommand extends Command {Content c;public CopyCommand(Content c) {this.c = c;}@Overridepublic void doit() {c.msg = c.msg + c.msg;}@Overridepublic void undo() {c.msg = c.msg.substring(0, c.msg.length()/2);}
}
public class DeleteCommand extends Command {Content c;String deleted;public DeleteCommand(Content c) {this.c = c;}@Overridepublic void doit() {deleted = c.msg.substring(0, 5);c.msg = c.msg.substring(5, c.msg.length());}@Overridepublic void undo() {c.msg = deleted + c.msg;}
}
public class InsertCommand extends Command {Content c;String strToInsert = "http://www.zhangxueliang.com";public InsertCommand(Content c) {this.c = c;}@Overridepublic void doit() {c.msg = c.msg + strToInsert;}@Overridepublic void undo() {c.msg = c.msg.substring(0, c.msg.length()-strToInsert.length());}
}
测试
public class Main {public static void main(String[] args) {Content c = new Content();Command insertCommand = new InsertCommand(c);insertCommand.doit();insertCommand.undo();Command copyCommand = new CopyCommand(c);insertCommand.doit();insertCommand.undo();Command deleteCommand = new DeleteCommand(c);deleteCommand.doit();deleteCommand.undo();List<Command> commands = new ArrayList<>();commands.add(new InsertCommand(c));commands.add(new CopyCommand(c));commands.add(new DeleteCommand(c));for(Command comm : commands) {comm.doit();}System.out.println(c.msg);for(int i= commands.size()-1; i>=0; i--) {commands.get(i).undo();}System.out.println(c.msg);}
}
Command命令设计模式相关推荐
- 设计模式学习笔记(十七)——Command命令模式
设计模式学习笔记(十七)--Command命令模式 Command命令模式介绍: Command命令模式是一种对象行为型模式,它主要解决的问题是:在软件构建过程中,"行为请求者"与 ...
- C++设计模式-Command命令模式
Command命令模式 作用:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可撤销的操作. 由于"行为请求者"与"行 ...
- 设计模式篇之——命令设计模式
命令设计模式很多人看了官方的文档是不够清晰的,甚至看了一遍基本记不住,说简单的谈不上,说难的话就那么一点代码,所以思想很重要,经过自己摸索后的一些理解,本文用最形象深刻的例子来带大家深刻理解命令设计模 ...
- Java设计模式(六):命令设计模式
1.应用场景 有时候需要向某些对象发送请求,但是并不知道请求的接受者是谁,也不知道请求的操作是什么,将'对象的请求者'从'命令的执行者'中解耦.使用此模式的优点还在于,command对象拥有更长的生命 ...
- java命令模式_Java中的命令设计模式
java命令模式 在本教程中,我们将学习命令模式,这是一种重要的行为设计模式. 它具有一些重要的应用程序,例如在文本编辑器中实现撤消/重做功能. 在命令设计模式中,有一个命令对象位于发送方和接收方对象 ...
- 设计模式示例_命令设计模式示例
设计模式示例 本文是我们名为" Java设计模式 "的学院课程的一部分. 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们. 您将了解模式如此重要的原因 ...
- Java中的命令设计模式
在本教程中,我们将学习命令模式,这是一种重要的行为设计模式. 它具有一些重要的应用程序,例如在文本编辑器中实现撤消/重做功能. 在命令设计模式中,有一个命令对象位于发送方和接收方对象之间. 发送者对象 ...
- 设计模式 命令模式 实例_根据您的命令-命令设计模式
设计模式 命令模式 实例 命令设计模式是一种广为人知的设计模式,属于行为设计模式("四人帮"的一部分). 顾名思义,它与应用程序中的动作和事件有关. 问题陈述: 假设有一个网页将在 ...
- 根据您的命令-命令设计模式
命令设计模式是一种广为人知的设计模式,它属于行为设计模式("四人帮"的一部分). 顾名思义,它与应用程序中的动作和事件有关. 问题陈述: 假设有一个网页将在其中包含多个菜单的情况. ...
最新文章
- java实现收货7天发通知,Java实训的第7天
- php isset()与empty()详解
- oracle sum 数据类型,五、Oracle内置函数
- mac安装软件管理Android手机,Mac如何管理Android手机:这方式很得体
- 页面间传输中文的乱码解决方法
- 查看静态链接和动态链接
- 均匀白噪声的定义及特点_噪声的物理本质是什么?
- pdmreader读写注册表失败_用PDMreader
- 结对开发Ⅴ——循环一维数组求和最大的子数组
- Objective-C超高精度的计时器
- 华为杨超斌:5G千元机有望明年底上市
- java类和对象的基础(笔记)
- web开发技术复习笔记
- LNMP环境SVN钩子脚本的使用
- 冲突等价(ConflictEquivalence) 可串行化调度(Serializable Schedules)
- 如何使用mp3转换器将wav转换成mp3格式
- 如何快速备份微信聊天记录到电脑
- 如何区分直连串口线和交叉串口线
- 投影仪家用推荐最新?投影仪什么牌子性价比比较高
- 安森美推出新的高功率图腾柱PFC控制器,满足具挑战的能效标准