使用Roboguice进行依赖注入?

42

我正在进行一个Android项目,想了解构建Android应用的良好架构的任何建议。

我想使用Roboguice进行依赖注入,并且一直在阅读有关MVVM模式或MVC模式的文章(Android MVVM设计模式示例)。

另外,我知道Roboguice具有非常酷的基于上下文的事件触发和处理功能,这可以非常易于测试,因为代码是解耦的。

有没有任何关于可工作的设计模式的建议?您曾经使用或开发过可测试和可扩展的架构吗?


2
这两种都适用于任何UI应用程序,而DI尤其适用于可测试性。但大多数设计模式都是情境性的,因此在你找到许多有用的模式之前,你需要编写一些代码和解决一些更低级别的问题。 - Merlyn Morgan-Graham
如果你在这里搜索"android design-patterns architecture",你可能会找到一些指导。 - DOK
如果你看过GoF的书,你会发现模式在各个地方都被使用。你的Activities可能是一个控制器模式(应该是),而内容提供者将是一个数据访问模式。你会发现其他一些地方也可以使用模式,但是正如之前提到的,使用哪种模式取决于具体情况。 - James Black
4
应用程序应该是单例模式。 - Snicolas
感谢您的所有评论,我将尝试深入了解将 Activities 作为控制器,以便代码更清晰。我的过去经验是在 Activity 上堆积了大量的代码,这种情况很难进行测试。 - Jose R. Cruz
1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
18

Android平台提供了一套通用的设计模式,并且与Web应用相比,由于硬件资源有限,直接使用这些模式在生产代码中通常更好。还有其他一些框架“包装”了基础平台;如果您有特定目的(或者可能是用于原型/实验),则值得研究,但是为了获得最佳支持水平,通常最好坚持使用标准组件。

这是在解决UI方案时的一个很好的资源:http://www.androidpatterns.com/

特别是对于DI:有一个适用于Android的Spring框架,我已经试用过它,看起来非常有前途。您已经提到了Roboguice作为另一种选择。然而,为了避免性能和库开销,我仍然发现编写一个简单的反射类来注册和注入依赖项在我的自己的代码内部是最容易的方法。类似于这种方法,但我通常会将注入代码移动到单独的单例中,并从那里引用它。

根据我的经验,大多数第三方提供的功能现在尚不够成熟,而且实际上并没有比基础平台提供的更多。但它们正在不断发展,所以一定要不时地试验一下那些知名的框架。


5
好的回答!Spring Android 很棒,但目前只提供了集成库,据我所知没有 DI(依赖注入)功能。RoboGuice 也不错,但 Reflection API 在某些设备上会带来性能损失。AndroidAnnotations 在编译时完成相同类型的工作。希望听到您的反馈 :)。 - Pierre-Yves Ricau
1
AndroidAnnotations 看起来非常有趣。我已经将它加入书签,下次在开发 Android 应用时会尝试一下,并在试用后提供反馈。 - seanhodges

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,