Android应用程序架构 – MVVM还是MVC?

我有一个Android项目,我正在开始工作,我希望它的结构尽可能健壮。

我来自一个WPF MVVM背景,我一直在读一些关于android应用程序架构,但我无法find一个明确的答案,我应该使用哪个架构。

有人build议使用MVVM – http://vladnevzorov.com/2011/04/30/android-application-architecture-part-ii-architectural-styles-and-patterns/

和其他人build议使用MVC,但没有具体说明应该如何实施。

正如我所说,我来自一个WPF的MVVM背景,因此我知道它很大程度上依赖于绑定,据我所知,默认情况下Android不支持。

似乎有一个第三方的解决scheme – http://code.google.com/p/android-binding/但我不知道我是否想依靠这个。 如果它的发展停止,未来的API等将不会得到支持。

基本上我正在寻找的是一个彻底的教程,将教我构build应用程序的结构的最佳做法。 文件夹和类结构等。我只是找不到任何彻底的教程,我会期望谷歌会为其开发者提供这样的教程。 我只是不认为这种文档处理技术方面足够好 – http://developer.android.com/guide/topics/fundamentals.html

我希望我已经足够清楚,并且我不要求太多,我只想确定我的应用程序的结构,在我的代码变成意大利面条怪物之前。

谢谢!

首先,Android不会强迫你使用任何架构。 不仅如此,它也使得试图跟随任何事情变得有些困难。 这将需要你成为一个聪明的开发人员,以避免创build一个意大利面代码:)

你可以尝试使用任何你知道的和你喜欢的模式。 我发现最好的方法会以某种方式进入你的胆量,因为你开发越来越多的应用程序(对此感到抱歉,但是一如既往,在你开始做对之前,你将不得不犯了很多错误)。

关于你知道的模式,让我做一些错误的事情:我将混合三种不同的模式,所以你得到了什么在Android的感觉。 我相信演示者/模型视图应该在片段或活动的某个地方。 适配器有时可以做这项工作,因为他们负责列表中的input。 也许活动也应该像控制者一样工作。 模型应该是普通的Java文件,而视图应该放在布局资源和一些自定义组件中,你可能需要实现。


我可以给你一些提示。 这是一个社区wiki的答案,所以希望其他人可能包括其他build议。

文件组织

我认为主要有两个明智的可能性:

  • types组织所有内容 – 为所有活动创build一个文件夹,为所有适配器创build另一个文件夹,为所有片段创build另一个文件夹等
  • 领域组织一切(也许不是最好的词)。 这意味着与“ViewPost”相关的所有内容都将位于同一个文件夹 – 活动,片段,适配器等内。与“ViewPost”相关的所有内容都将位于另一个文件夹中。 相同的“EditPost”等,我想活动将强制要创build的文件夹,然后会有一些更基本的基类例如。

就我个人而言,我只参与了使用第一种方法的项目,但我真的想尝试后面的,因为我相信它可以使事情更有条理。 我看到没有30个无关文件的文件夹没有优势,但这是我第一种方法。

命名

  • 在创build布局和样式时,请始终使用它们所在的活动(/片段)的前缀来命名(或标识它们)。

因此,在“ViewPost”上下文中使用的所有string,样式,id应该以“@ id / view_post_heading”(例如textview),“@ style / view_post_heading_style”,“@ string / view_post_greeting”开始。

这将优化自动完成,组织,避免名称碰撞等。

基类

我想你会想要使用基类来做几乎所有的事情:适配器,活动,片段,服务等等。这些对于debugging目的可能是有用的,所以你知道你所有的活动中发生了哪些事件。

一般

  • 我从来没有使用匿名类 – 这些都是丑陋的,当你试图阅读代码时,会引起你的注意力
  • 有时候我更喜欢使用内部类(相比于创build一个专门的类) – 如果一个类不会在其他地方使用(而且很小),我认为这非常方便。
  • 从一开始就想想你的日志系统 – 你可以使用android的日志logging系统,但是很好的使用它!