程序员必备设计模式之命令模式

今天我们再来讲一个设计模式,命令模式。这个模式,相信各位程序员朋友都曾经使用过,只是你还有可能没有理解它的核心思想。

这几年随着物联网越来越发达,这种场景越来越常见了,我们可以通过语音来控制全家的家电,小米、华为、阿里跟百度,都是在这方面做的比较好的,通过一个智能音箱或者智能手机,可以随便打开电视,开关空调等等。那么,你有没有想过这么一个问题,为什么这些物联网的智慧中心知道如何去关闭你家的智能设备呢?在代码上应该是什么样的架构,如何进行设计呢?

我们我们知道,市面上的智能设备非常多,厂商也非常多,每个厂商可能的标准都不一样,如果我们来开发一个物联网智慧中心,我们不可能去学习所有厂商的API接口,学习他们的代码,一来成本非常地高,二来实现起来非常的复杂,即使是同一个厂商,可能不同的设备都有不同的逻辑,开发成本巨大。

这个时候就要祭出我们的设计模式了,命令模式。命令模式是一种数据驱动的设计模式,它属于行为型模式。它将请求封装成对象,执行者不用关心里面的具体实现逻辑,只要进行执行就可以了。在现在的物联网开放平台上,也是这么实现的,厂商去对应的开放平台上,申请一个命令,编写相应的代码,至于物联网智慧中心,它并不关心具体的代码实现,只知道你家的智能空调绑定了这个命令,直接使用这个命令即可。

可能到这里你还有点懵,这讲得都是什么玩意。我们再通过一个耳熟能详的例子。相信大家都有使用过线程池的使用经验。无论是JAVA也好,C++也好,大多数的线程池都是这样使用的。你创建一个类,去实现某一个接口,例如Java中的Runnable。然后你就可以将这个类放入线程池的队列当中了。

这实际上就是一个典型的命令模式,对于线程池来说,只关心线程的调度,队列的大小,线程数量这些,不用关心具体举行的任务,只知道调用对应的执行方法即可。对于命令本身,只关心自身的逻辑,不用关心线程如何调度。这就非常好的将命令的请求者与命令的执行者进行解耦了!

欢迎关注公众号:“趣学Web前端”,获取更多前端知识精粹和学习社群: 回复 学习路径,将获取笔者多年从业经验的前端学习路径的思维导图 Vue、React、小程序、Node

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值