2009年4月9日星期四

JavaDesign_021:命令模式 Command(摘录+整理)

1. 特点
(1)把发出命令的责任和执行命令的责任分开。
(2)每个命令都被封装成一个类。

2. 把“每个命令都被封装成一个类我能理解,但为什么不让命令的发出方直接执行命令?
一般情况下,当然可以这样做。但增加一个命令执行方,除了出于“解耦”命令的发出方和命令之外,还因为考虑到以下情况:
(1)宏命令:记录多个命令组成一个宏。宏命令也是命令。(2)Undo 与 Redo。的执行命令前宏命令:记录多个命令组成一个宏。(3)多层的Undo 与 Redo。执行命令前宏命令:记录多个命令组成一个宏。(4)拒绝执行某个命令。(5)排队执行某个命令队列。(命令的发出方可能已经不存在了,但命令仍然“活着
(6)记录执行过的重要命令到日志。

3. 代码架构(1)命令执行方类:聚合所有命令,即含有所有命令的实例。
(2)抽象命令(接口或抽象类,在这里一般用接口)。
(3)具体命令,继承或实现抽象命令类。

4. Java中对命令模式的应用
(1)AWT库中的事件处理。
5. 典型应用场景(1)录音机。录音机有Play、Stop等按键,要使用录音机,用户只需要按下不同的按键。(2)界面中的菜单项。
参考文献:
1. 《设计模式》 板桥里人
2. 《Java与模式》 阎宏

没有评论: