(1)把发出命令的责任和执行命令的责任分开。
(2)每个命令都被封装成一个类。
2. 把“每个命令都被封装成一个类”我能理解,但为什么不让命令的发出方直接执行命令?
一般情况下,当然可以这样做。但增加一个命令执行方,除了出于“解耦”命令的发出方和命令之外,还因为考虑到以下情况:
(1)宏命令:记录多个命令组成一个宏。宏命令也是命令。(2)Undo 与 Redo。的执行命令前宏命令:记录多个命令组成一个宏。(3)多层的Undo 与 Redo。执行命令前宏命令:记录多个命令组成一个宏。(4)拒绝执行某个命令。(5)排队执行某个命令队列。(命令的发出方可能已经不存在了,但命令仍然“活着”)
(6)记录执行过的重要命令到日志。
3. 代码架构(1)命令执行方类:聚合所有命令,即含有所有命令的实例。
(2)抽象命令类(接口或抽象类,在这里一般用接口)。
(3)具体命令类,继承或实现抽象命令类。
4. Java中对命令模式的应用
(1)AWT库中的事件处理。
参考文献:
1. 《设计模式》 板桥里人
2. 《Java与模式》 阎宏
没有评论:
发表评论