[同系列文章]
1. 设计模式学习笔记(一)- -策略模式
2. 设计模式学习笔记(二)- -观察者模式
3. 设计模式学习笔记(三)- –装饰者模式
4. 设计模式学习笔记(四)- –工厂模式
5. 设计模式学习笔记(五)- –单件模式
又是崭新的一日,今天我来学习命令模式~~~GoGoGo:)
看了一下书,好多页呀哈哈哈,有得撸
命令模式
将“请求”封装成对象,以便使用不同的请求 、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。
书中的引子梳理:
对象村餐厅:
客人发出订单请求,调用createOrder()方法,女招待调用takeOrder()方法拿走订单,然后调用orderUp()方法通知厨师做菜,厨师根据订单调用具体的做菜方法,如makeXXX()来烹饪,做好之后,调用outPut()方法出菜。
订单:封装准备餐点的请求createOrder();
女招待:接受订单takeOrder();,调用orderUp();
厨师:准备餐点,调用makeXXX();
该餐厅的这些步骤,可以视作为一个模型,该模型允许将“发出请求的对象”和“接受和执行这些请求的对象”分隔开来。
将餐厅的这些步骤变成命令模式
Client客户端:createCommandObject();execute();setCommand();
Invoker 执行者:execute();
Receiver接收者:action1(),action2();…..
配合图看↓
重点来了↓
类图
相关实例代码:
我又偷懒了,,见谅见谅
就是这么简单。
其他功能性的拓展, 创建一个新的功能类并实现Command就可以了。
应用场景:队列请求、日志请求……学完之后的感觉简直美滋滋,Perfect ε≡٩(๑>₃<)۶ 一心向学