将动作的请求者 和 执行者 解耦.
将军命令士兵打仗, 但是将军并不知道是哪个士兵. 所以 命令本身也是一个对象, 一个类.
这个命令, 进攻, 可以同时传递命令给 弓箭手, 刀斧手 等各种士兵进行进攻. 所以等于说把这个"命令" 本身抽象成一个类.
这样, 将军只需要面对的是“命令”对象来发布,而士兵也只需要面对“命令” 来执行.
对象有哪些:
将军, invoker, 发布命令
命令, MyCommand, 命令具体(一般是一个接口, execute()执行命令, undo()撤销命令), 还需要有一个具体的命令类ConcreteCommand实现这个接口.
士兵, recever, 具体执行命令
例如智能生活项目, 也就是我们有很多智能家电, 比如有智能电灯,智能电饭锅, 智能电视等.
命令模式, 比较麻烦. 可能导致有过多的具体的命令类, 造成复杂度, 所以还是不推荐使用吧.