还想说一句,我觉得命令模式主要是解耦了调用者和被调用者之间的关系。当一个请求到达的时候,不是直接将请让接收者来完成响应,而是将接收者封装在一个命令对象中,用命令对象暴漏的接口去调用接收者完成响应工作。这样做的好处就是当有不同的请求接收者的时候,客户端的代码可以尽量保持一致。并且同一个请求也可以换另一个接收者来处理,而不会影响到请求的发出者(客户端)。这是我的理解,不对之处,还请各位指点。

今天看到了很早之前的帖子有浮上来了.
感谢这么多人挑出了文章的错误,并且一一指出.
这篇文章写的匆忙,有很多错误之处请大家见谅.
也很很高兴有人认同我的观点

好帖子是要顶的!!!
不错的文章。

初学 设计模式 感觉不错

写的的确是不错,不过我发表点其他意见。
有人觉得所谓命令模式眼熟吗?其实某种意义上来说,和cpu执行指令的方法一样的。

一个32bit的二进制数就是指令,按照被挨个加到流水线,context就是寄存器里面的参数,cpu负责调度执行,从而redo undo 都很容易,物极必反,盛极必衰,所谓模式啊,设计啊,从有计算机那天就存在,从来不是神秘的东西,只是不停的深入人心,普及开来而已,以前的设计者水平都是一流的,现在这些方法为大众所知了。其实很多东西,以前的人水平早就达到了,只是时机没成熟,很多说法不是像现在这么说,认真体会一些事情,就能感到冯诺依曼的伟大了。事务都是螺旋上升的。所谓命令模式和cpu执行流水线不一样的就是,它离我们又近了一层。

我觉得这个是应用封装相同点,把不同的东西封装在命令总,而执行是相同的,跟模板模式很像

主要我觉得还是在调用者和命令接受者之间进行了解耦,而之所以能解耦,则是因为命令都实现了统一的接口,调用者只需要和接口耦合,而不需要知道接口的具体实现类里的内容(由于不知道具体的实现类内容,所以实现类在进行变更时,调用者无需感知;而这种变更可以带来很大灵活性,比如实现里修改了命令接受者)。
而文章中提到的命令+组合+职责链模式,这3者结合在一起,确实比简单的命令模式威力大了许多,也说明了楼主的举一反三,知识学的很活。