欢迎光临散文网 会员登陆 & 注册

设计模式:命令模式

2021-08-06 08:01 作者:做架构师不做框架师  | 我要投稿

什么是命令模式?

命令模式(Command Pattern),他尝试以对象来代表实际行动。命令对象可以把行动(Action)及其参数封装起来,于是这些行动可以被:

1、重复多次

2、取消(如果改对象有实现的话)

3、取消后再重做

一句话归纳

运筹帷幄之中,决胜千里之外

代码示例

周末休息时,我们平时都会叫一些朋友好友一起去下馆子,假如我们现在去的这家餐馆里面各大菜系都有,都特别正宗,比如什么火锅、小烧烤、西餐、云南菜、东北菜等等。首先服务生会给我们一个菜单,然后我们进行点菜,点完之后,服务生会拿着菜单给后厨(这里假定每一种菜系都有一个厨子),掌勺的大厨做出菜,服务生端出来,我们就大快朵颐。


适用性

以下场景我建议你考虑使用

  • 只要你认为是命令的都可以使用,比如GUI中每一个按钮都是命令、遥控器、模拟DOS命令。

  • 调用者需要与接收者解耦时,命令模式可以使调用者和接收者不直接交互。

  • 当系统需要支持命令的撤销操作和恢复操作时,可以将命令对象存储起来,采用备忘录模式来实现。

局限性

以下场景我建议你慎重使用

  • 很明显,会产生大量的命令实现类,比如遥控器上1-9个台这就9个命令实现类,还有那么多按钮。

  • 命令模式的结果其实就是接收方的执行结果,但是为了以命令的形式进行架构、解耦请求与实现,引入了额外类型结构(引入了请求方与抽象命令接口),增加了理解上的困难。不过这也是设计模式的通病,抽象必然会额外增加类的数量,代码抽离肯定比代码聚合更加难理解。

写在最后

好兄弟可以点赞并关注我的公众号“javaAnswer”,全部都是干货。


设计模式:命令模式的评论 (共 条)

分享到微博请遵守国家法律