命令模式——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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值