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

Dro*_*ror 35 architecture model-view-controller android mvvm

我有一个我正在开始研究的android项目,我希望它的结构尽可能健壮.

我来自WPF MVVM背景,我一直在阅读有关Android应用程序架构的一些内容,但我无法找到关于我应该使用哪种架构的明确答案.

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

和其他人建议使用MVC,但没有具体说明应该如何实现.

正如我所说,我来自WPF-MVVM背景,因此我知道它在很大程度上依赖于绑定,据我所知,Android中默认不支持绑定.

似乎有第三方解决方案 - http://code.google.com/p/android-binding/ 但我不知道我是否愿意依赖它.如果它的开发会停止并且未来的API等不支持它会怎么样?

基本上我正在寻找的是一个全面的教程,它将教会我构建应用程序结构的最佳实践.文件夹和类结构等我找不到任何全面的教程,我本以为Google会为其开发人员提供这样的教程.我只是不认为这种文档处理技术方面足够好 - http://developer.android.com/guide/topics/fundamentals.html

我希望我已经不够清楚,我不是要求太多,我只是想确保我的应用程序的结构,在我的代码将变成面条怪物.

谢谢!

Ped*_*iro 35

首先,Android不会强迫您使用任何架构.不仅如此,它还使得尝试跟随任何事情变得有些困难.这将要求您成为一名聪明的开发人员,以避免创建意大利面条代码库:)

您可以尝试适合您知道的任何模式.我发现,当你开发越来越多的应用程序时,最好的方法会以某种方式进入你的内心(对不起,但是一如既往,你必须犯很多错误,直到你开始正确行事).

关于你知道的模式,让我做错了:我将混合三种不同的模式,这样你就能感受到android中的功能.我相信Presenter/ModelView应该位于片段或活动中的某个位置.适配器有时可以完成这项工作,因为它们会处理列表中的输入.可能活动应该像控制器一样工作.模型应该是常规的Java文件,而View应该放在布局资源和一些您可能必须实现的自定义组件中.


我可以给你一些提示.这是社区维基的答案,所以希望其他人可能会包含其他建议.

文件组织

我认为主要有两个合理的可能性:

  • 类型组织所有内容- 为所有活动创建文件夹,为所有适配器创建另一个文件夹,为所有片段创建另一个文件夹等
  • 领域组织一切(也许不是最好的词).这意味着与"ViewPost"相关的所有内容都在同一个文件夹中 - 活动,片段,适配器等.与"ViewPost"相关的所有内容都在另一个文件夹中.对于"EditPost"等也是如此.我想活动会强制你创建的文件夹,然后会为基类提供一些更通用的文件.

就个人而言,我只使用第一种方法参与项目,但我真的想尝试后期,因为我相信它可以使事情更有条理.我认为拥有一个包含30个不相关文件的文件夹没有任何优势,但这是我用第一种方法得到的.

命名

  • 创建布局和样式时,请始终使用活动(/ fragment)的前缀命名(或标识它们).

因此,在 "ViewPost" 的情况下使用应该开始的所有字符串,样式,IDS是 "@ ID/view_post_heading"(例如用于一个TextView), "@风格/ view_post_heading_style", "@字符串/ view_post_greeting".

这将优化自动完成,组织,避免名称切割等.

基础类

我认为您几乎可以使用基类来完成您所做的一切:适配器,活动,片段,服务等.这些可能至少在调试时非常有用,因此您可以了解所有活动中发生的事件.

一般

  • 我从不使用匿名类 - 这些是丑陋的,当你试图阅读代码时会引起你的注意力
  • 有时我更喜欢使用内部类(比较创建一个专用类) - 如果一个类不会在其他任何地方使用(而且它很小)我认为这非常方便.
  • 从一开始就考虑你的日志系统 - 你可以使用android的日志系统,但要好好利用它!