`

命令模式——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
分享到:
评论

相关推荐

    设计模式——命令模式

    同时,命令模式还支持撤销操作,只需添加一个undo()方法到Command接口,然后在ConcreteCommand中实现具体撤销逻辑。 在实际应用中,命令模式常用于GUI系统中的事件处理,例如按钮点击事件,以及在框架和库中实现...

    设计模式作业——用命令模式java语言编写的烧烤店

    在这个“设计模式作业——用命令模式java语言编写的烧烤店”项目中,我们将探讨如何运用命令模式来构建一个模拟烧烤店的系统。命令模式是一种行为设计模式,它将请求封装为一个对象,使得我们可以参数化不同的请求、...

    详解Java设计模式——命令模式

    命令模式的结构主要由三部分组成:Invoker、Command和Receiver。Invoker是调用者,负责调用命令;Command是命令对象,封装了具体的执行操作;Receiver是被调用者,负责执行命令。 命令模式的优点是降低了系统耦合度...

    设计模式——可复用面向对象软件的基础(1)

    行为型模式如观察者模式(Observer)、命令模式(Command)和策略模式(Strategy)则关注于对象间的通信和行为,使代码更易于维护和适应变化。 设计模式的核心思想是将常见问题的解决方案标准化,提供了一种通用的...

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

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

    Activiti命令拦截器和设计模式.docx

    2. 命令发出者和执行者分离——Activiti 将任务委托给 CommandInterceptor 来执行,而不是直接让 CommandExecutor 执行,这是命令模式解耦的体现。 责任链模式的特性在 Activiti 中的体现: 1. 将请求放入职责链上...

    设计模式代码——c#

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

    设计模式之(命令+责任链)

    本文将深入探讨两种重要的设计模式——命令模式和责任链模式,并通过Java代码实例来阐述它们的应用和实现。 首先,我们来看**命令模式**。命令模式的核心思想是将请求封装为一个对象,从而可以将命令参数化、支持...

    WPF Binding绑定 Command命令基础学习源码

    命令模式是设计模式之一,WPF中的命令主要用于处理UI交互,分离用户界面与业务逻辑。命令分为两种类型:依赖属性命令(DependencyProperty-based Commands,如ButtonBase.Command)和实现ICommand接口的自定义命令。...

    设计模式实例,包括桥接模式、命令模式。

    这里我们将深入探讨两个重要的设计模式——桥接模式和命令模式。 **桥接模式(Bridge Pattern)** 桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地进行变化。在Java中,桥接模式通常...

    JAVA责任链与命令模式

    本文将详细介绍两种重要的行为模式——**责任链模式**(Responsibility Chain, RC)与**命令模式**(Command),并结合具体的Java示例进行讲解。 #### 二、责任链模式(RC) 责任链模式是一种行为设计模式,它让多个处理...

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

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

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

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

    【设计模式-命令模式实战之WCS详细设计与实现(三)】堆垛机控制示例

    在本文中,我们将深入探讨设计模式中的命令模式,并结合实际案例——WCS(Warehouse Control System,仓库控制系统)的堆垛机控制,来详细介绍其详细设计与实现。命令模式是一种行为设计模式,它将请求封装为一个...

    db2常用命令——摘录

    <command>` 查看命令的帮助信息。 15. **备份与恢复**: - `db2 backup db <db name>` 停止服务并备份数据库。 - `db2 -v "BACKUP DATABASE ... ONLINE"` 在线备份,不影响数据库服务。 - `db2 restore db ...

    23种 设计模式---面向对象的基本原则

    - 命令模式(Command):将一个请求封装为一个对象,以便使用不同的请求、队列或者日志请求,支持可撤销的操作。 - 解释器模式(Interpreter):给定一种语言,定义它的文法表示,并提供一个解释器来处理该语言中...

    《java设计模式》课后习题模拟试题解答——刘伟.zip

    3. **行为型模式**:包括策略(Strategy)、模板方法(Template Method)、观察者(Observer)、迭代器(Iterator)、访问者(Visitor)、责任链(Chain of Responsibility)、命令(Command)、备忘录(Memento)、...

    《linux常用命令全集》——精通linux常用命令的宝典

    通过`grep pattern file_name`,可以查找包含特定模式的行。 9. **find**:在文件系统中搜索文件。例如,`find / -name "file_name"`将在根目录下查找名为“file_name”的文件。 10. **touch**:创建新文件或更新...

Global site tag (gtag.js) - Google Analytics