引子:同样的菜单控件,在 不同的应用环境中的功能是完全不同的;而菜单选项的某个功能可能和鼠标右键的某个功能完全一致。按照最差、最原始的设计,这些不同功能的菜单、或者右键弹出菜单是要分开来 实现的,你可以想象一下,word 文档上面的一排菜单要实现出多少个“形似神非”的菜单类 来?这完全是行不通的。这时,就要运用分离变化与不变的因素,将菜单触发的功能分离出 来,而制作菜单的时候只是提供一个统一的触发接口。这样修改设计后,功能点可以被不同 的菜单或者右键重用;而且菜单控件也可以去除变化因素,很大的提高了重用;而且分离了显示逻辑和业务逻辑的耦合。这便是命令模式的雏形。
命令模式的定义为:将一个请求封装为一个对象,从而使你可用不同的 请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。



