问答详情
源自:7-3 [php]策略模式的控制反转

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

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

提问者:追逐梦想30 2016-08-10 15:52

个回答

  • zZ爱吃菜
    2016-08-11 15:46:21
    已采纳

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

    紧耦合:

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

    依赖倒置和控制翻转:

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

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

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

  • qq_慕斯卡6187973
    2019-12-25 22:15:18

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

  • qq_慕斯卡6187973
    2019-12-25 22:12:19

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

  • 追逐梦想30
    2016-08-11 16:45:15

    好的,非常感谢!