设计模式:命令模式
什么是命令模式?
命令模式(Command Pattern),他尝试以对象来代表实际行动。命令对象可以把行动(Action)及其参数封装起来,于是这些行动可以被:
1、重复多次
2、取消(如果改对象有实现的话)
3、取消后再重做
一句话归纳
运筹帷幄之中,决胜千里之外
代码示例
周末休息时,我们平时都会叫一些朋友好友一起去下馆子,假如我们现在去的这家餐馆里面各大菜系都有,都特别正宗,比如什么火锅、小烧烤、西餐、云南菜、东北菜等等。首先服务生会给我们一个菜单,然后我们进行点菜,点完之后,服务生会拿着菜单给后厨(这里假定每一种菜系都有一个厨子),掌勺的大厨做出菜,服务生端出来,我们就大快朵颐。

适用性
以下场景我建议你考虑使用
只要你认为是命令的都可以使用,比如GUI中每一个按钮都是命令、遥控器、模拟DOS命令。
调用者需要与接收者解耦时,命令模式可以使调用者和接收者不直接交互。
当系统需要支持命令的撤销操作和恢复操作时,可以将命令对象存储起来,采用备忘录模式来实现。
局限性
以下场景我建议你慎重使用
很明显,会产生大量的命令实现类,比如遥控器上1-9个台这就9个命令实现类,还有那么多按钮。
命令模式的结果其实就是接收方的执行结果,但是为了以命令的形式进行架构、解耦请求与实现,引入了额外类型结构(引入了请求方与抽象命令接口),增加了理解上的困难。不过这也是设计模式的通病,抽象必然会额外增加类的数量,代码抽离肯定比代码聚合更加难理解。
写在最后
好兄弟可以点赞并关注我的公众号“javaAnswer”,全部都是干货。
