命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的处理对象,并把该命令传给这个处理对象,该处理对象执行命令。命令模式把发出命令的责任和执行命令的责任分开,委派个不同的对象。
我们先考虑发出命令和执行命令耦合起来的情况,看有啥不好
|
|
“命令发出者”要同所有的“命令执行者”维持关系(前者要有后者的所有引用),只要增加一种命令执行者,就需要修改命令发出者的代码逻辑,显然不符合“开闭”原则的吧;尤其是命令发出者如果是不开放修改的(比如位于框架中),就很难保证扩展性了;命令执行有可能失败,或者Ctrl+Z回退,这种操作显然是经常遇到的,对于”命令发出者“的逻辑复杂度来说,显然又是雪上加霜。