## 命令模式
###
请求以命令的形式包裹在对象中,并传递给调用对象。调用对象寻找可以处理该命令的对象,并把该命令传给相应的对象执行命令。
命令模式是一种特殊的策略模式,体现的时多个策略执行的问题而不是选择的问题。
###
## 应用场景
###
只要你认为是命令的地方就可以采用命令模式
日常每个界面、按钮、键盘、事件操作都是命令设计模式
###
## 角色
###
**抽象命令(Command)**:需要执⾏的所有命令都在这⾥声明
**具体命令(ConcreteCommand)**:定义⼀个接收者和⾏为之间的弱耦合,实现execute()⽅法,负责调⽤接收者的相应操作,execute()⽅法通常叫做执⾏⽅法。
**接受者(Receiver)**:负责具体实施和执⾏⼀个请求,⼲活的⻆⾊,命令传递到这⾥是应该被执⾏的,实施和执⾏请求的⽅法叫做⾏动⽅法
**请求者(Invoker)**:负责调⽤命令对象执⾏请求,相关的⽅法叫做⾏动⽅法
**客户端(Client)**:创建⼀个具体命令(ConcreteCommand)对象并确定其接收者。
###
![](https://img.kancloud.cn/d8/62/d862e67437f92ede444950d750b7ceaf_1846x1308.png)
###
## 具体实现(**云效代码study-java项目当中设计模式当中有代码案例**)
###
**业务需求**
###
实现智能家居,开发⼀个app,可以控制家⾥的家电,⽐如控制空调的开关、加热、制冷 等功能
利⽤命令设计模式,帮⽼王完成这个需求,注意:动作请求者就是⼿机app, 动作的执⾏者是家电的不同功能
###
![](https://img.kancloud.cn/39/78/397843e72a0abc1866d142c980d07e3a_2361x1499.png)
###
![](https://img.kancloud.cn/39/fb/39fb644e658cffc821d4230cd6ba5d20_2144x1252.png)
###
![](https://img.kancloud.cn/c7/7f/c77ffa4a5286ffcad04595141b7a351f_2294x1275.png)
###
![](https://img.kancloud.cn/2d/8e/2d8ec9776a81eb66ad99c09674367eba_2807x1281.png)
###
![](https://img.kancloud.cn/51/82/51820f5e2d5ac687d1f7c82ae87e0ae6_2807x1262.png)
###
![](https://img.kancloud.cn/51/f7/51f72cbb2c5a320c4b6c2a42c7568f8b_2789x1329.png)
###
![](https://img.kancloud.cn/7c/f2/7cf282a7669262cb5a2c58175d9d76d0_2776x1640.png)
###
![](https://img.kancloud.cn/96/d9/96d950428bd72e01951fe37c7c3cb415_1869x1604.png)
- 设计模式六大原则
- 常见的三大设计模式分类
- 创建型模式之单例模式
- 单例模式之懒汉
- 单例模式之饿汉
- 单例模式之如何选择懒汉饿汉
- 什么情况下使用单例模式
- 创建型模式之工厂模式
- 简单工厂模式
- 工厂方法模式
- 抽象工厂模式
- 创建型模式之原型模式
- 创建型模式之建造者模式
- 结构型模式之适配器模式
- 接口的适配器模式
- 类的适配器模式
- 结构型模式之桥接模式
- 结构型模式之桥接模式和适配器模式的区别
- 结构型模式之装饰器模式
- 结构型模式之代理模式
- 结构模式之外观模式
- 结构模式之享元模式
- 行为模式之策略模式
- 行为模式之模板模式
- 行为模式之观察者模式
- 行为模式之责任链模式
- 行为模式之命令模式
- 行为模式之迭代器模式
- 行为模式之备忘录模式
- 行为模式之状态模式