Kev*_*ang 16 dependency-injection
我最近一直在使用StructureMap并且彻底享受了这种体验.但是,我可以看到如何通过连接所有内容轻松地将其带走,并最终获得将大量接口引入其构造函数的类.尽管在使用依赖注入框架时这确实不是一个大问题,但它仍然认为某些属性实际上不需要为了连接它们而需要接口.
你在哪里画出界面的界限而不仅仅是在课堂上添加一个属性?
Jor*_*oba 22
依赖注入的主要问题是,虽然它给出了松散耦合架构的外观,但事实并非如此.
你真正在做的是将这种耦合从编译时移到运行时,但是如果A类需要一些接口B工作,仍然需要提供实现接口B的类的实例.
依赖注入仅应用于需要动态更改的应用程序部分,而无需重新编译基本代码.
使用我看到对控制反转模式有用的东西:
小智 9
想想你的设计.DI允许您通过配置更改来更改代码的功能.它还允许您打破类之间的依赖关系,以便您可以更轻松地隔离和测试对象.你必须确定它有意义的地方和不合适的地方.没有轻拍的答案.
一个好的经验法则是,如果它太难以测试,那么你就会遇到一些单一责任和静态依赖的问题.将执行单个函数的代码隔离到类中,并通过提取接口并使用DI框架在运行时注入正确的实例来中断静态依赖性.通过这样做,您可以轻松地分别测试这两个部分.
依赖注入仅应用于需要动态更改的应用程序部分,而无需重新编译基本代码
DI应该用于将代码与外部资源(数据库,Web服务,xml文件,插件体系结构)隔离开来.如果您正在测试数据库上的DEPEND组件,那么在许多公司中,在代码中测试逻辑所需的时间几乎是令人望而却步的.
在大多数应用程序中,数据库不会动态更改(尽管可能),但一般来说,将应用程序绑定到特定外部资源几乎总是好的做法.涉及改变资源的数量应该很低(数据访问类应该很少在其方法中具有高于一的圈复杂度).
| 归档时间: |
|
| 查看次数: |
1453 次 |
| 最近记录: |