一、模式提出
将一个请求封装为一个对象,从而使你可用不同的请求对客户惊醒参数化;请求排队或记录请求日志,以及支持可撤销操作。
1、它能够较容易地设计一个命令队列;
2、在需要的情况下,可以较容易的将命令记入日志;
3、允许接受请求的一方是否要否决请求
二、业务逻辑背景
男孩子有一个女孩子,然后女孩子要自己的男友做一列相关的事情如:买鲜花给他、陪她逛街、打个小kiss等等,即女孩子下发命令,男孩子如何执行
三、UML图解
四、代码详解
客户端调用
package command.com.cn;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
new MM().order(new Boy());//女朋友给自己的男友下发命令
}
}
第一个类男友类比较痛苦为自己的女友干这样的事情:哈哈
package command.com.cn;
import java.util.ArrayList;
import java.util.List;
public class Boy {
private String name;
private List<Command> commands=new ArrayList<Command>();
//添加女友要求的命令
public void addCommand(Command c){
this.commands.add(c);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/**
* 执行女友相关的命令
*/
public void executeCommands() {
for(Command c:commands){
c.execute();
}
}
}
第二个类娇气的女友要男生下发命令,太不公平了
package command.com.cn;
public class MM {
private String name;
//执行命令的是妹妹,所以在此方法要代理男友执行命令
public void order(Boy b) {
b.addCommand(new ShoppingComand());//妹妹要求男友买衣服
b.addCommand(new HugCommand());//妹妹要男友亲嘴
b.executeCommands();//执行妹妹做的要求
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
第三个是一个命令接口
package command.com.cn;
public abstract class Command {
public abstract void execute();//让女友的男友执行行动
public abstract void undo();
}
第四个男友执行亲嘴行动的操作类
package command.com.cn;
public class HugCommand extends Command{
@Override
public void execute() {
System.out.println("month-to-month");
}
@Override
public void undo() {
System.out.println("on way");
}
}
第五个男友执行逛商场行动的操作类
package command.com.cn;
public class ShoppingComand extends Command {
@Override
public void execute() {
System.out.println("go shopping buy clothing");
}
@Override
public void undo() {
System.out.println("Don't shopping");
}
}
Test
- 大小: 13.6 KB
分享到:
相关推荐
设计模式之命令模式 设计模式之命令模式代码 设计模式之命令模式代码
命令模式(Command) 用意:把一个请求封装到一个对象中,把发出命令和执行命令的责任分开,委派给不同的对象实现。
设计模式之命令模式,你值得拥有,帮你快速掌握命令模式的实例。
命令模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或纪录请求日志,以及支持可撤销的操作。 那么让我们简要的说一下命令模式的特点。 它能比较容易地设计一个...
设计模式这命令模式的Java实现版本和UML设计类图
学习js设计模式的例子,用到了命令模式、修装模式
命令模式代码demo 命令模式代码demo 命令模式代码demo
C#设计模式之 -- 命令模式代码示例和应用Dome
命令模式的示例代码和文档,学习命令模式的参考资料。
C#命令模式应用
命令模式(多命令)的代码(Java), 详细描述了命令模式(多命令)的代码架构.
ios平台中通过最简单的代码讲解命令模式,可在博客http://blog.sina.com.cn/s/blog_161d504630102wxis.html中查看简单解释
命令模式的C++实现
设计模式--命令模式java例子
设计模式C++学习之命令模式(Command)
C#命令模式模型,参考GOF 《设计模式》,模型代码。
命令模式:某个方法需要完成某一个行为,但这个行为的具体实现无法确定,必须等到执行该方法时才可以确定, * 这是一个命令模式的一个实例
命令模式,最简单的实现命令模式,没有对需求的负责理解,只针对模式本身。最纯粹的体现命令模式的特点
命令模式的示例代码及类图(用powerDesign画的),都是自己亲手写的,很简单,看不懂你来杀我! 注:oom文件需要手工用powerDesign打开,默认没有被PD关联。