命令模式可以在一个对象中封装一个请求,把方法调用作为对象进行管理,并在满足时序关系或是满足某些条件的情况下,传递这些对象,并且调用这些对象。在实际应用中将命令抽象成一个接口,所有的命令都实现这个接口,具体命令角色实现接口规定的方法.对象的请求者(Invoker)和命令对象是弱耦合关系, 和接收者(Reciever)都不过问命令的执行过程。命令模式可以作为模板方法的一个替代方案,同时命令模式经常要与中介者模式和备忘录模式协同工作。
命令模式把发出命令的责任和执行命令的责任分开,委派给不同的对象。每一个命令都是一个操作:请求的一方发出请求要求执行一个操作;接收的一方收到请求,并执行操作。命令模式允许请求的一方和接收的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否被执行、何时被执行,以及是怎么被执行的。
应用命令模式的一个典型例子就是菜单。菜单项知道何时需要执行一个动作,但是不知道应该调用哪个方法,通过命令模式可以确定对应与每个菜单标记的方法调用。
一个简单的示例如下:

































































































































































































































