命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作
    image.png
    前因:行为请求者与行为实现者耦合。对请求排队或记录请求日志,以及支持可撤销的操作,紧耦合是不太合适的。
    命令模式作用:第一,它能较容易地设计一个命令队列;第二,在需要的情况下,可以较容易地将命令记入日志。第三,允许接收请求的一方决定是否要否决请求。第四,可以容易地实现对请求的撤销和重做;第五,由于加进新的具体命令类不影响其他的类,因此增加新的具体命令类很容易。最关键的优点就是命令模式把请求一个操作的对象与知道怎么执行一个操作的对象分隔开。
    但不一定遇到类似情况就要用命令模式,比如命令模式支持撤销/恢复操作功能,但不清楚是否需要这个功能时,不要实现命令模式。不要为代码添加基于猜测的、实际不需要的功能。