PowerRC's Blog

Posted by:
PowerRC

码农,吃货,偶尔飙车和摄影,应该属于危险人物。

614

我对控制翻转与依赖注入的理解

控制翻转与依赖注入是一种由java届兴起的设计模式,比较老了,不算什么新鲜东西,可能是有一堆java的程序员转行写php,所以也把这种设计模式带入到了php。
现在比较新的框架,例如lavarel和phalcon都是用到了这种设计模式。

我算是比较老的程序员了,从大学里面学的面向对象和面向过程的开发模式,转去接触这种概念有点不适应。
也不知道是语言问题还是其他人写的教材故弄玄虚,我觉得他们没有讲清楚。
现在简单地谈谈我的理解。

所谓控制翻转,就是系统中的对象里面的属性,不依赖纯代码实现,而是通过这个对象之外的参数来实现。
这些参数可以在对象生成的时候通过构造函数传递进去,也可以对象生成后通过set方法来设置。
比较普遍的是通过xml配置文件控制参数的。
给他起名叫控制翻转,纯粹是老外故弄玄虚。直接叫参数控制估计就很多人能懂了。这样可以增加代码重用和灵活性。毕竟改xml文件比改代码文件代价低。

理解了控制翻转,再去理解所谓的依赖注入就容易很多。
前面说了,基于控制翻转/参数控制的概念,我们需要用一些参数去操控对象。
因此对象依赖于这些参数,我传递参数过去的时候,就叫注入依赖。
现在很多高级的框架可以做到,这些参数只有在实际使用的时候才会被系统初始化,而不是传递/设置的时候就被初始化。这样可以使程序运行起来时更有效率。

说到这里,其实就引申到一个概念。
就是如果区分/定义一个对象,可注入还是非可注入。
可注入的对象,可以理解为一种容器,这种对象的特性和功能会随着你注入的参数改变。
自然,不可注入的对象,都是一种特定的对象,设计来就是为了干某种特定功能的,因此不可以也不需要参数注入来改变功能。

版权申明

若文中未注明,则本文由 PowerRC 原创,转载请注明出处。

分享

发表评论

*

code

back up ↑