设计模式真解——命令模式篇


命令模式


    典型应用:C/S协议交互(以数据包作为命令对象)

    模式描述:将“请求”封装成对象,实现请求者与执行者之间的解耦,请求者不需要知道事情是怎么完成的,只需要向“命令对象”注入命令,然后由“请求对象”去通知执行者执行命令,同时“命令对象”也很方便保存与回档

    现实案例:去餐厅吃饭,顾客直接和厨师说话,让厨师做菜,厨师忙着做菜,只是将顾客的需求记下,顾客一多,厨师就容易出现遗漏,错误,先后颠倒等问题,同时,有些顾客看到人太多,让厨师取消某个菜,或者换一个菜,厨师需要根据顾客的需求修改炒菜的顺序队列,很容易出错

    于是就出现了“服务员”这个中间件,服务员负责统计顾客的需求,将顾客的需求记录下来,形成规范的订单,然后将订单有序地排列给厨师,当有顾客要对订单进行修改时,只要拿出对应的订单对象,按照顾客的需求修改,然后再贴回去即可,如果要撤销订单,直接将单子拿掉就可以了

    顾客厨师之间不存在直接的交互,顾客不必知道厨师是怎么做菜的,厨师也不需要知道哪个订单是对应哪个顾客的,顾客为什么要点变态辣,他只要负责按照订单上的内容将菜做完即可。同时,如果顾客付钱的时候对价格有异议,可以将订单拿过来核对

    In My Opinion:命令模式将命令部分独立出来,不仅将请求者和执行者解耦,也将命令本身解耦出来,只要请求者和执行者的功能不发生变化,若要增加命令,只需要添加命令对象的种类就可以,请求者和执行者本身都不用因为命令的改变而发生变化
    并不是所有请求都适合用命令模式,普通的对象间操作只要同类的规模不大,没有撤销,更改命令的特殊需求,就不必采用命令模式,即使需要,将这部分代码重构成命令模式即可,滥用命令模式会造成不必要的浪费

猜你喜欢

转载自blog.csdn.net/weixin_39633215/article/details/80138991