行为请求者和行为实现者之间一般来说是存在紧耦合关系的。这什么意思呢?也就是说,一般我们想用一个行为,是通过在一个类里面调用另一个类的方法来实现,这很正常,一般情况下没什么问题,和我们需要一个对象new一个一样,但是遇见特殊场合引入变化可能会出现问题,只不过不像new对象需求的那么普遍。
实际上,当我们需要将请求排队,或做日志,支持请求的撤销和重做时,这种紧耦合是不合适的。有时候一个人要做事情不需要知道的太多。
命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行 参数化,对请求排队或记录请求日志,以及支持可撤销的操作。
命令模式的优点:
1.较容易设计一个命令队列。
2.需要的话,可以较容易的将命令记录
3.允许决定否决请求
4.实现撤销与重做
5.新加命令不影响其他的类,增加新命令类很容易
6.把请求一个操作的对象与知道怎么执行一个操作的对象分割开。
可以参考这个人的博客:http://www.cnblogs.com/sjms/archive/2010/07/09/1774069.html