`

命令模式——Command

阅读更多

偷懒一下,直接用JavaEye上chjavach老兄的文章了,他讲命令模式用了6节不厌其烦地阐述。虽然冗长,但算是详尽,需要看时下载附件中的电子书和代码即可^_^


文中第一个例子“点击按钮开机”非常形象,记清楚以下几点:


1、MainBoardApi,GigaMainBoard(以及MsiMainBoard)是命令接收者接口、命令接收者实现类。好比“主板标准”和“主板”。

他们是真正执行命令的地方,但只提供诸如open()、reset()的方法;

命令实现类OpenCommand将一个命令接收者实现类GigaMainBoard封装为内部属性,当OpenCommand被触发时(调用OpenCommand的execute()方法),他只管再去调用内部这个属性的open()方法即可。


2、Command,OpenCommand (以及扩展例子中的ResetCommand)是命令接口、命令实现类。好比“按钮标准”和“按钮”,又称为“命令”。

他们只是用来触发命令的(想想“按钮”吧^_^),并不是命令的真正执行者(执行者是“主板”)


3、Box是“命令(按钮)持有者”,好比“机箱”。

Box内部可以封装许多按钮,需要代码实现相应的组装功能(可以放在Client中实现)。


4、Client——在这个例子中完成两个功能:

1)组装工作:

用导线连接按钮和主板;将按钮映射到机箱上某个位置。如下面代码1、2

public class Client {
	public static void main(String[] args) {
		//1:把命令和真正的实现组合起来,相当于在组装机器,
		//把机箱上按钮的连接线插接到主板上。
		MainBoardApi mainBoard = new GigaMainBoard();
		OpenCommand openCommand = new OpenCommand(mainBoard);
		//2:为机箱上的按钮设置对应的命令,让按钮知道该干什么
		Box box = new Box();
		box.setOpenCommand(openCommand);
		
		//3:然后模拟按下机箱上的按钮
		box.openButtonPressed();
	}
}
 

 

 

2)模拟用户点击按钮。如上面代码3

box.openButtonPressed();
 

记忆要点:

         命令持有者 内部封装了 命令 命令 内部封装了 命令接收者 。且这三者都 可以有相应的接口 及其 实现类。                                                                

 

 

原文链接:

http://chjavach.iteye.com/blog/705916

http://chjavach.iteye.com/blog/709574

http://chjavach.iteye.com/blog/711226

http://chjavach.iteye.com/blog/713967

http://chjavach.iteye.com/blog/716734

http://chjavach.iteye.com/blog/719371

  • 描述: “开机”例子的类图
  • 大小: 8.7 KB
分享到:
评论

相关推荐

    批量上传文件及执行命令脚本——ssh_batch_trans

    -C, --cmd 执行命令模式 -M, --command 执行具体命令 -S, --sendfile 传输文件模式 -L, --localpath 本地文件路径 -R, --remotepath 远程服务器路径 IP列表格式: IP地址 用户名 密码 端口 ...

    设计模式代码——c#

    14. 命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 16. 观察者模式(Observer Pattern) 17. 解释器模式(Interpreter Pattern) 18. 中介者模式(Mediator Pattern) 19. 职责链模式(Chain of ...

    Python设计模式之命令模式原理与用法实例分析

    本文实例讲述了Python设计模式之命令模式原理与用法。...设计模式——命令模式 命令模式(Command Pattern):将请求封装成对象,从而使可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作.

    设计模式可复用面向对象软件的基础.zip

    5.2 COMMAND(命令)—对象行为型 模式 154 5.3 INTERPRETER(解释器)—类行为型 模式 162 5.4 ITERATOR(迭代器)—对象行为型 模式 171 5.5 MEDIATOR(中介者)—对象行为型 模式 181 5.6 MEMENTO(备忘录)—...

    设计模式--可复用面向对象软件的基础

    5.2 COMMAND(命令)——对象行为型模式 5.3 INTERPRETER(解释器)——类行为型模式 5.4 ITERATOR(迭代器)——对象行为型模式 5.5 MEDIATOR(中介者)——对象行为型模式 5.6 MEMENTO(备忘录)——对象行为型...

    design-pattern-java.pdf

    命令模式-Command Pattern 请求发送者与接收者解耦——命令模式(一) 请求发送者与接收者解耦——命令模式(二) 请求发送者与接收者解耦——命令模式(三) 请求发送者与接收者解耦——命令模式(四) 请求发送者...

    深入浅出设计模式(中文版)

    5.2CommandPattern(命令模式) 179 5.2.1定义 179 5.2.2现实中的实例——餐馆订菜 180 5.2.3C#实例——简单计算器 181 5.2.4Java实例——总开关 185 5.2.5优势和缺陷 189 5.2.6应用情景 189 5.3Interpreter...

    研磨设计模式之命令模式

    命令模式(Command)1 场景问题 1.1 如何开机计有些朋友看到这个标题会非常奇怪,电脑装配好了,如何开机?不就是按下启动按钮就可以了吗?难道还有什么玄机不成。对于使用电脑的客户——就是我们来说,开机确实很...

    深入浅出设计模式(中文版电子版)

    5.2CommandPattern(命令模式) 179 5.2.1定义 179 5.2.2现实中的实例——餐馆订菜 180 5.2.3C#实例——简单计算器 181 5.2.4Java实例——总开关 185 5.2.5优势和缺陷 189 5.2.6应用情景 189 5.3Interpreter...

    VI命令详解

    详细介绍VI的使用方法及操作,Linux之VI命令详解 ...基本上vi可分为三种操作状态,分别是命令模式(Command mode)、插入模式(Insert mode)和底线命令模式(Last line mode), 各模式的功能区分如下:

    java高手真经 (UML建模+设计模式+面向服务架构) 卷6

    pattern/src/behavior/command //13.6命令模式 pattern/src/behavior/memento //13.7备忘录模式 pattern/src/behavior/state //13.8状态模式 pattern/src/behavior/visitor //13.9访问者模式 pattern/src/behavior/...

    java高手真经 (UML建模+设计模式+面向服务架构) 卷8

    pattern/src/behavior/command //13.6命令模式 pattern/src/behavior/memento //13.7备忘录模式 pattern/src/behavior/state //13.8状态模式 pattern/src/behavior/visitor //13.9访问者模式 pattern/src/behavior/...

    精通windows server 2008 命令行与powershell电子书PDF版(第一卷)

    7.5 netsh子命令——netsh诊断命令 328 7.5.1 connect ieproxy——代理服务器连接 328 7.5.2 connect iphost——到远程主机的连接 329 7.5.3 connect mail——到OE服务器的连接 329 7.5.4 connect news——设置OE...

    cmd操作命令和linux命令大全收集

    CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本、文件系统版本) 命令大全 1. gpedit.msc-----组策略 2. sndrec32-------录音机 3. Nslookup-------IP地址侦测器 ,是一个 监测网络中 DNS...

    精通windows server 2008 命令行与powershell 电子书PDF版(第四卷)

    7.5 netsh子命令——netsh诊断命令 328 7.5.1 connect ieproxy——代理服务器连接 328 7.5.2 connect iphost——到远程主机的连接 329 7.5.3 connect mail——到OE服务器的连接 329 7.5.4 connect news——设置OE...

    精通windows server 2008 命令行与powershell电子书PDF版(第三卷)

    7.5 netsh子命令——netsh诊断命令 328 7.5.1 connect ieproxy——代理服务器连接 328 7.5.2 connect iphost——到远程主机的连接 329 7.5.3 connect mail——到OE服务器的连接 329 7.5.4 connect news——设置OE...

    精通windows server 2008 命令行与powershell 电子书PDF单文件完整版

    精通windows server 2008 命令行与powershell 电子书PDF单文件完整版 内容简介: ...10.4.4 &&——如果多个命令中的一个失败即中止后续命令 473 10.4.5 ]sysy[ ]sysy[——允许在字符串中包含空格 473...

    精通windows server 2008 命令行与powershell电子书PDF版(第二卷)

    7.5 netsh子命令——netsh诊断命令 328 7.5.1 connect ieproxy——代理服务器连接 328 7.5.2 connect iphost——到远程主机的连接 329 7.5.3 connect mail——到OE服务器的连接 329 7.5.4 connect news——设置OE...

    windows实用dos命令大全

    (三)RD——删除子目录命令  1.功能:从指定的磁盘删除了目录。  2.类型:内部命令  3.格式:RD[盘符:][路径名][子目录名]  4.使用说明:  (1)子目录在删除前必须是空的,也就是说需要先进入该子目录,...

Global site tag (gtag.js) - Google Analytics