命令模式-COMMAND

命令模式

说一个二元模型

consumer 调用provider

providerA-->通过条件判断A

providerB-->通过条件判断B

providerC-->通过条件判断C

现在consumer想使用providerA|B|C这三个生产者的方法

普通模式:

不使用命令模式的情况下

我们的consumer通过判断索引来找,我们要使用哪个provider的方法

这样就出现了问题,我们的调用者和被调用者是紧耦合的

如果我们的被调用者如果新增/减少功能,或者做修改,在调用者处都要改动,我们换用命令模式来修改

说明:

命令模式的关键思路就是:使用接口来实现解耦:面向接口编程

命令模式:

我们在普通模式下,consumer想使用provider的方法,是把provider注入到consumer中的

我们现在new很多concreteCommand(命令)对象,这些对象实实在在的有方法

这些concreteCommand对象全部继承于command接口;这个接口里面会写concreteCommand实现类都会实现的方法;比如:

execute()

undo()

我们现在要在consumer里面做的就是,想要使用哪些provider里面的方法,不把这些provider作为构造器参数传入到consumer中,而是把他们的方法注入到consumer,而且consumer里面直接调用"接口"执行共同的命令

execute()

undo()

即可

是不是又有了多态的思想呢,这样,如果provider想要修改自己的任何东西,直接改其某个具体的concreteCommand就可以了 ,如果想新增,直接新增就可以了,这样就实现了与consumer的接口,consumer只面向了command接口,我们唯一要做的就是把具体的concreteCommand注入到consumer即可

tips:网上有很多遥控器的demo,有兴趣的可以看看

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值