## 一、命令
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
命令模式联系生活,结合面向对象思想,最起码应该有四个类,命令发出者,命令传递命令接收者,还有命令本身。
或许有的人会说,命令传递者有点多余,多余吗?
为什么要加命令传递者?命令传递者可不仅是用来传递命令哦!
先从生活中抽象出一个例子:饭店服务员就好是模式中的命令传递者。
试想,饭店里没有服务员会怎么样?
顾客要跟厨师直接下订单。不论是菜做好了还是某一样菜没有,厨师都得找到具体顾客,一个顾客可以,顾客多了怎么办?厨师记得清楚吗?恐怕他自己做菜都忙不过来,那还记得是谁点的菜!到这还没有完,顾客要修改订单,想换菜,厨师这下头大了,是哪桌的菜啊,哪桌要换啊,哪桌先来的啊,哪个桌的菜没有了呀……
饭店服务员的任务是什么?
1、整理顾客的订单——增加,删除,修改。由于顾客或者饭店原因可能有事需要对订单进行修改,删除,这都是服务员任务。
2、记录订单的顺序
3、把整理好的订单传给厨师。
这样,他只需要按照服务员给他的订单先后做菜就Ok了,其间有什么变化,也是服务员来管理订单。要是没有那样菜,他也只需通过服务员传递给顾客,及时调换。
看来命令模式中,命令传递者是必不可少了。
剩下命令发出者,接受者,都各司其职,系统就运转起来了。
## 二、类图
![](https://box.kancloud.cn/2016-02-18_56c5ce732c485.png)
- 前言
- 抽象工厂——创建型设计模式一
- 工厂三姐妹——创建型设计模式之二
- 初识面向对象设计模式
- 建造者模式——创建型模式之三
- 原型模式——创建型设计模式四
- 适配器 and 组合模式——结构性模式之一
- 桥接模式——结构性设计模式之二
- 组合模式——结构型设计模式之三
- 装饰模式——结构型设计模式之四
- 外观模式——结构型设计模式之五
- 代理模式——结构型设计模式之六
- 观察者模式——行为型设计模式之五
- 模板设计——行为设计模式之一
- 命令模式——行为设计模式之二
- 状态模式——行为型设计模式之三
- 职责模式——行为设计模式之四
- 中介模式——行为模式之六
- 策略+简单工厂 实战篇
- 看观察者怎么全方位观察机房收费系统
- 登陆也需要装饰——机房收费系统装饰模式实战
- 何为抽象?你有本末倒置吗?
- 再回首,策略、简单工厂是否依然?
- 再回首——行为型设计模式