将“请求”封装成命令对象。把行为请求者和行为实现者进行解耦。
同时,invoker用list来储存命令。可以实现撤销,命令。
什么时候用?
敏捷开发原则:如果不知道什么时候用,就先不要用。在需要的时候再实现也是比较容易的。
Struts2的中的Action实现就是基于命令模式的。每个action相当于一个命令。
空对象,在初始化一个对象(接口)的时候。如果要赋空值,可以赋给一个实现了该接口的空对象。而不是用null赋值。(这样的好处应该是至少不用在使用的时候添加判断是否为null的语句,或者是添加异常有关代码了。)