使用Android依赖注入框架的具体优势或优势是什么,如Dagger,Transfuse或RoboGuice?
例如,什么样的应用程序从使用DI中受益最多?是否有更多的性能优势,或者更多的是扩展应用程序的简易性,还是更多关于使其可测试?
问这个问题的原因之一是衡量我正在开发的应用程序是否真的会从中受益或不多.由于我打算在某些方面认真对待应用程序,可测试性和易于扩展性将是很好的,即使第一版本使用成本高(更多时间设置,学习曲线等).
谢谢!
例如,什么样的应用程序从使用DI中受益最多?
依赖注入(作为模式而不是库)几乎可以使所有代码受益.
它促进了模块化组件的设计,这些组件仅暴露了执行特定操作所需的必要API.当您被迫分解应用程序时,您必须考虑要公开的实现细节,API的行为方式以及类和方法的可见性.
它促进了组件的逻辑抽象(想想:接口及其实现).你当然不必这样做,但它最终会有机地发生,无论如何你的DI事物越多.
它通过创建单一类型的消费来促进可测试性,通过该消费类,类可以获得所需的内容.需要换掉Foo
一个TestFoo
?没问题.
是否有更多的性能优势?
否.依赖注入库的存在仅仅是为了减少模式周围的样板并增加请求依赖性的声明能力.
是否更容易扩展应用程序?
绝对.虽然我绝不会建议在Android应用程序中使用Guice(或RoboGuice),但是从Google I/O向Guice的介绍性讲话是一个很好的介绍,为什么依赖注入在这方面很重要.
更多关于使其可测试?
是的,不是.这是适当抽象和模块化的快乐副作用.测试是一件好事,因此依赖注入提供了一个轻松的事实也很棒.
我最近在Android的背景下谈到了Dagger,您可以观看*或查看幻灯片.谈话以依赖注入作为模式开始,然后转向Dagger如何减少样板并启用一些非常酷的功能.
我还制作了一个相当先进的示例应用程序,它利用Dagger进行复杂的注入用例,这些用例也可能值得一试.
*谈话目前不是免费的,但在未来10个月的某个时候会变得如此.