举几个例子说明下依赖倒置和控制反转的使用!
首先我觉得你要清晰几个概念:
紧耦合:
首先在 page 类中与 UserStrategy 的实例,以及策略的具体实现来达到策略的具体实现,这样是不是 page 与 UserStrategy 紧密相关,也就是说 如果 UserStrategy 的实现修改了,例如:去掉了 showAd() 方法。page 自然需要做相应修改,这就叫做 紧耦合(依赖性太强)。
依赖倒置和控制翻转:
page 类里不需要 UserStrategy 的具体实现,只需要知道 page 场景下需要 UserStrategy 的策略,具体策略下实现那些方法,不需要知道。这样 page 与 UserStrategy 是离散的、低耦合的。这样代码的就更加稳定,可维护,以拓展。
明白了这几个概念,我想你应该知道为什么我们需要依赖倒置和控制翻转了。
设计模式不要为了用而用,而是应该明白为什么要用才去用
难道意思是实现解耦,需要新增Strategy的index方法,然后把showAd,showCategory包进去。然后在page类的index方法中只有$$this->strategy->index(),这样就实现了无关性
不明白说的是什么,紧耦合不好,需要解耦。但实际上,page类的index方法,是依赖于Strategy的showAd,showCategory()方法,如果一个方法要删除掉,比如删除showAd,那还是要改page类的index方法。
好的,非常感谢!