Skip to content

Latest commit

 

History

History

20_command

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

命令模式将请求命令封装为一个对象,这样可以使用不同的请求参数化其他对象(将不同请求依赖注入到其他对象),并且能够支持请求命令的排队执行、记录日志、撤销等附加控制功能。

  • Receiver 接收命令的接收对象
  • Command 命令对象
  • Invoker 调用命令的对象

对于电视机,我们可以通过两种方式打开电视机:

  • 电视机上的开关键
  • 遥控器上的开关键

在这个例子中:

  • Receiver 是电视
  • Command 是 ON 这个命令
  • Invoker 是真实的调用者,电视机上的开关键或遥控器上的开关键

命令模式与策略模式的区别:

在策略模式中,不同的策略具有相同的目的、不同的实现、互相之间可以替换。比如,BubbleSort、SelectionSort 都是为了实现排序的,只不过一个是用冒泡排序算法来实现的,另一个是用选择排序算法来实现的。而在命令模式中,不同的命令具有不同的目的,对应不同的处理逻辑,并且互相之间不可替换。