2018 年 11 月更新
在 Android 中的 MVC 和 MVP 工作和撰写博客数年之后(请参阅下面的答案正文),我决定以更全面、更易于理解的形式记录我的知识和理解。
因此,我发布了有关 Android 应用程序架构的完整视频课程。所以,如果你有兴趣掌握 Android 开发中最先进的架构模式,check out this comprehensive course here。
此答案已更新,以便在 2016 年 11 月保持相关性
您似乎在寻找 architectural patterns 而不是 design patterns。
设计模式旨在描述程序员为处理一组特定的重复性软件任务可能实施的一般“技巧”。例如:在OOP中,当需要一个对象通知一组其他对象某些事件时,可以使用observer design pattern。
由于 Android 应用程序(以及大多数 AOSP)是用 Java 编写的,Java 是面向对象的,我认为您将很难找到一种未在 Android 上使用的单一 OOP 设计模式。
另一方面,
架构模式并不针对特定的软件任务——它们旨在根据软件组件的用例为软件组织提供模板问题。
听起来有点复杂,但我希望举个例子来说明一下:如果某个应用程序将用于从远程服务器获取数据并以结构化的方式呈现给用户,那么MVC 可能是一个不错的选择审议。请注意,我没有提到应用程序的软件任务和程序流程——我只是从用户的角度描述了它,并且出现了一种架构模式的候选者。
由于您在问题中提到了 MVC,我猜您正在寻找架构模式。
从历史上看,Google 没有关于应用程序架构的官方指南,这(除其他原因外)导致 Android 应用程序的源代码完全混乱。事实上,即使在今天,我看到的大多数应用程序仍然没有遵循 OOP 最佳实践,也没有显示出清晰的代码逻辑组织。
但今天情况不同了——谷歌最近发布了Data Binding library,它与Android Studio完全集成,甚至推出了一套architecture blueprints for Android applications。
两年前,很难找到有关 Android 上的 MVC 或 MVP 的信息。如今,MVC、MVP 和 MVVM 已经成为 Android 社区的“流行语”,我们周围有无数专家不断试图说服我们 MVx 比 MVy 更好。在我看来,讨论 MVx 是否比 MVy 更好是完全没有意义的,因为这些术语本身非常模棱两可——只要看看this question 的答案,你就会意识到不同的人可以将这些缩写与完全不同的结构联系起来。
由于已经正式开始寻找适用于 Android 的最佳架构模式,我想我们即将看到更多的想法浮出水面。在这一点上,真的无法预测未来哪种模式(或哪些模式)会成为行业标准——我们需要拭目以待(我猜是一两年的事情)。
但是,我可以高度自信地做出一个预测:数据绑定库的使用不会成为行业标准。我有信心这样说,因为 Data Binding 库(在其当前实现中)提供了短期的生产力提升和某种架构指南,但从长远来看它会使代码不可维护。一旦这个库的长期影响浮出水面 - 它就会被放弃。
现在,虽然我们今天确实有一些官方指南和工具,但我个人认为这些指南和工具并不是最好的选择(而且它们绝对不是唯一的)。在我的应用程序中,我使用自己的 MVC 架构实现。它简单、干净、可读和可测试,并且不需要任何额外的库。
此 MVC 不仅在外观上与其他 MVC 不同 - 它基于 Activities in Android are not UI Elements 的理论,这对代码组织具有巨大的影响。
因此,如果您正在为遵循 SOLID 原则的 Android 应用程序寻找良好的架构模式,您可以在我关于 MVC and MVP architectural patterns in Android 的帖子中找到其中的描述。