对依赖注入的理解
??依赖注入是指当一个对象要与其他对象发生依赖关系时,通过抽象来注入所依赖的对象。A对象依赖于B对象,等价于A对象内部存在对B对象的“调用”,而前提是A对象内部拿到了B对象的引用。B对象的引用的来源无非有以下几种:A对象内部创建(无论是作为字段还是作为临时变量)、构造器注入、属性注入、方法注入。后面三种方式统称为“依赖注入”,而第一种方式我也生造了一个名词,称为“依赖内生”,二者根本的差异即在于,我所依赖的对象的创建工作是否由我自己来完成。当然,这个是广义的依赖注入的概念,而我们一般不会这样来使用。我们通常使用的,是依赖注入的狭义的概念。 ??构造注入是指通过构造函数来传入具体类的对象,设值注入是指通过setter方法来传入具体类的对象,而接口注入是指通过实现在接口中声明的业务方法来传入具体类的对象。这些方法在定义时使用的是抽象类型(参数定义),在运行时再传入具体类型的对象(传参数时传具体的),由子类对象来覆盖父类对象。 ??“依赖注入”常常用于扩展,尤其是在开发框架的设计中。从某种意义上来说,任何开发框架,天生都是不完整的应用程序。因此,一个优秀的开发框架,不仅要让开发者能够重用这些久经考验的的卓越的解决方案,也要让开发者能够向框架中插入自定义的业务逻辑,从而灵活自由地适应特定的业务场景的需要——也就是说要具备良好的可扩展性。框架良好的扩展性都与“依赖注入”的使用密不可分! ??比如我们使用接口回调;setListener等等都是依赖注入的原理。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- DBA_Oracle Startup / Shutdown启动和关闭过程详解(概念)
- 通配符匹配 & 正则表达式匹配【leetcode Wildcard Matc
- 【ajax入门】使用Ajax异步实现用户名异步校检
- iphone – 在尝试重构类时,Xcode被卡住了
- oracle – 存储过程错误PLS-00201:必须声明标识符’UTL_HT
- objective-c – 如何在iPhone SDK的Xcode中构建自定义控件?
- react中antd的表格自定义展开
- reactjs – 如何在react / webpack 2设置中导入电子ipcRend
- 如何获得Swift的当前时间?
- ruby – RSpec – 使用test double作为块参数