命令模式:
应用场景:
现实生活中,命令模式的例子也很多。比如看电视时,我们只需要轻轻一按遥控器就能完成频道的切换,这就是命令模式,将换台请求和换台处理完全解耦了。电视机遥控器(命令发送者)通过按钮(具体命令)来遥控电视机(命令接收者)。再比如,我们去餐厅吃饭,菜单不是等到客人来了之后才定制的,而是已经预先配置好的。这样,客人来了就只需要点菜,而不是任由客人临时定制。餐厅提供的菜单就相当于把请求和处理进行了解耦,这就是命令模式的体现。
UML图:
关系体现:
Invoker和Command的聚合关系体现在Invoker类中private Command command;并在SetCommand方法中当参数传了进去。
ConcreteCommand和Receicr的关联关系体现在ConcreteCommand类中的构造函数中将Receiver类型的参数传了进去。