命令模式

命令模式

定义

假设有一个快餐店,而我是该餐厅的点餐服务员,那么我一天的工作应该是这样的,当某位客人点餐或者打来订餐电话后,我会把他的需求都写在清单上,然后交给厨房,客人不用担心是哪些厨师帮他们炒菜,我们餐厅还可以满足客人需要的定时服务,比如客人可能当前正在回家的路上,要求 1 个小时后才开始炒他的菜,只要订单还在,厨师就不会忘记,客人也可以很方便的打电话来撤销订单,另外如果有太多客人点餐,厨房也可以按照订单的顺序排队炒菜
这些记录着订单的清单,就是命令模式中的命令对象

用途

命令模式是最简单和优雅的模式之一,命令模式中的命令 (command)指的是一个执行某些特定事情的指令
命令模式最常见的应用场景是:有时候需要向某些对象发起请求,但是并不知道请求的接受者是谁,也不知道被请求的操作是什么,此时希望用一种松耦合的方式来设计程序,使得请求发送者和请求接收者能够消除彼此之间的耦合关系
拿订餐来说,客人需要向厨师发送请求,但是完全不知道这些厨师的名字和联系方式,也不知道厨师炒菜的方式和步骤,命令模式把客人订餐的请求封装成 command 对象,也就是订餐中的订单对象,这个对象可以在程序中被四处传递,就像订单可以从服务员手中传到厨师的手中,这样一来,客人不需要知道厨师的名字,从而解开了请求调用者和请求接收者之间的耦合关系
另外,相对于过程化的请求调用,command 对象拥有更长的生命周期,对象的生命周期是跟初始请求无关的,因为这个请求已经被封装在了 command 对象的方法中,成为了这个对象的行为,我们可以在程序运行的任意时刻去调用这个方法,就像厨师可以在客人的预定 1 小时之后才帮他炒菜,相当于程序在 1 小时之后才开始执行 command 对象的方法
除了这两点之外,命令模式还支持撤销、排队等操作


命令模式
http://blog.climbed.online/2023/11/24/Web -- Knowledge is infinite/编程思想/设计模式/命令模式/
作者
Z.K.
发布于
2023年11月24日
许可协议