2011-06-05 109 views
42

我正在开发一个Android项目,我想知道关于什么是构建Android应用程序的好架构的建议。在Roboguice中使用依赖注入?

我想用用Roboguice依赖注入和我一直在阅读有关MVVM模式或MVC模式(Android MVVM Design Pattern Examples)。

而且我知道roboguice有一个很酷的基于上下文的事件的认识和处理功能,可以很可测试的代码分离。

在工作设计模式有何建议?您已经使用过或开发过的可测试和可扩展架构?

+2

这些对于任何UI应用程序来说都是很好的选择,而DI对于可测试性特别有用。但是大多数设计模式都是情景模式,所以在找到许多有用的模式之前,你必须编写一些代码并找出一些你想解决的较低级别的问题。 – 2011-06-05 20:43:33

+0

如果您在这里搜索[“android设计模式架构”](http://stackoverflow.com/search?q=android+design-patterns+architecture),您可能会发现一些指导。 – DOK 2011-06-05 20:50:08

+0

如果你看看GoF的书,你会发现模式将被用在不同的地方。你的活动可能是一个控制器模式(应该),内容提供者将是一个数据访问模式。你会发现其他地方的模式可以是有用的,但如前所述,它取决于使用模式的情况。 – 2011-06-05 21:06:12

回答

18

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

这是一个巨大的资源在UI解决方案工作时:http://www.androidpatterns.com/

专门为DI:有一个Spring framework for Android,我已经与它一出戏,它看起来很有希望。您已经提到Roboguice作为另一种替代方案。但是,为了避免性能和库开销,我仍然发现最简单的方法是编写一个简单的基于反射的类,它在我自己的代码中注册和注入依赖关系。与this approach类似,除了我通常将注入代码移入单独的单例并从那里引用它。

在我的经验,大部分的第三方应用都尚未成熟到足以依靠,现在,真的不给你多少在什么基础平台提供了顶部。然而,他们一直在不断进步,所以一定要不时地尝试大牌。

+5

伟大的答案! Spring的Android很棒,但它目前只提供集成库,没有DI在那里AFAIK。 RoboGuice也不错,但Reflection API在某些设备上带有性能成本。 [AndroidAnnotations](http://github.com/excilys/androidannotations)在编译时做同样的事情。很想听到你的反馈:)。 – 2012-01-14 16:03:08

+1

AndroidAnnotations看起来很有趣。我已经为下一次我正在制作Android应用程序的书签添加了书签,一旦有机会尝试,我会放弃一些反馈。 – seanhodges 2012-01-19 11:55:52