命令模式的作用是为了让调用操作的对象与知道如何实现该操作的对象进行解耦,那么在看到对于命令模式的定义:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。
首先在图中看,具体完成请求的Receiver和具体的命令对象进行关联,这里就是让 Receiver的操作对应命令对象中,这就是第一句话把一个请求封装到一个对象中,通过这种形式首相把请求的人和完成请求的人隔离开来了,而如果说为什么后面还有说将命令对象进行储存等等这些操作,是根据Invoker这个类解决的,当你把相应的命令对象给制造出来以后,那么就意味着你现在有几个命令要被执行了,但是当我要面对很多个命令对象时它有太多了,怎么办呢,就通过这个Invoker这个类进行解决这个问题,所以它和抽象的命令类进行聚合的关系,而你的命令对象是可扩展的,比如把Receiver中的操作进行组合然后和一个具体的命令对象进行绑定,使用就出现变化了,就现在了你的命令对象这里。而对你 发出的命令进行管理这些操作就只会在你的Invoker类中。
这个图是在大话设计模式中的,而且当中还有一个很好的烧烤摊与服务员的例子,就是说明这个模式的精妙之处的,结合着图和代码看食用效果更佳。
如有新的见解请不吝赐教。感谢!!!