为了账号安全,请及时绑定邮箱和手机立即绑定

策略模式的依赖倒置和控制反转具体应用

举几个例子说明下依赖倒置和控制反转的使用!

正在回答

4 回答

首先我觉得你要清晰几个概念:

紧耦合:

首先在 page 类中与 UserStrategy 的实例,以及策略的具体实现来达到策略的具体实现,这样是不是 page 与 UserStrategy 紧密相关,也就是说 如果 UserStrategy 的实现修改了,例如:去掉了 showAd() 方法。page 自然需要做相应修改,这就叫做 紧耦合(依赖性太强)。

依赖倒置和控制翻转:

page 类里不需要 UserStrategy 的具体实现,只需要知道 page 场景下需要 UserStrategy 的策略,具体策略下实现那些方法,不需要知道。这样 page 与 UserStrategy 是离散的、低耦合的。这样代码的就更加稳定,可维护,以拓展。

明白了这几个概念,我想你应该知道为什么我们需要依赖倒置和控制翻转了。

设计模式不要为了用而用,而是应该明白为什么要用才去用

4 回复 有任何疑惑可以回复我~
#1

追逐梦想30 提问者

好的,非常感谢!
2016-08-11 回复 有任何疑惑可以回复我~
#2

奋斗de小蜗牛

我咋感觉你说得不对呢,你用一个类的方法,然后后续把这个方法删了,那肯定需要修改啊,任何方法也做不到你把一个类的方法删了,然后不修改调用它的地方,绝对不可能,你看能说把showAd和showcate包在一个方法里,这样就可以了,那我要是再把这个方法删除了呢?不还是得修改?
2020-04-02 回复 有任何疑惑可以回复我~

难道意思是实现解耦,需要新增Strategy的index方法,然后把showAd,showCategory包进去。然后在page类的index方法中只有$$this->strategy->index(),这样就实现了无关性

0 回复 有任何疑惑可以回复我~

不明白说的是什么,紧耦合不好,需要解耦。但实际上,page类的index方法,是依赖于Strategy的showAd,showCategory()方法,如果一个方法要删除掉,比如删除showAd,那还是要改page类的index方法。

1 回复 有任何疑惑可以回复我~
#1

坐不住的雨伞

我觉得也是啊,如果userStrategy中删除了一个方法,Page中的index需要修改,和最佳回答提到的紧耦合一样啊
2019-12-28 回复 有任何疑惑可以回复我~

好的,非常感谢!

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

策略模式的依赖倒置和控制反转具体应用

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信