【发布时间】:2019-06-04 00:20:04
【问题描述】:
我是一名 android 开发人员,我在我的应用程序中研究了所有这三种架构模式。此外,我还浏览了关于 stackoverflow 的几篇关于每篇文章的区别的文章。我的理解可能不是 100% 正确,但这是我目前所知道的简要情况。
MVC - 控制器接收用户输入。控制器更新模型,然后告诉视图更新自己。
MVP - View 获取用户输入并通知 Presenter。 Presenter 从 Model 获取数据,然后将其发送给 View。 Presenter 和 View 是一对一的关系。
MVVM - View 接收用户输入。 ViewModel 从 Model 生成数据并输出数据流,任何订阅它的 View 都可以使用该数据。 View 和 ViewModel 具有一对多的关系。
问题是,在面试中,我多次被问到如何判断何时使用哪种模式。我认为面试官想知道的是应用程序的类型(如银行、电子商务等)及其适当的架构模式。或者至少有一些具体的解释,说明为什么我想在一个应用程序中使用 MCV,而在另一个应用程序中使用 MVP,而对于 MVVM 也是如此。
我的研究做得很好,但在互联网上找不到任何关于每种模式用例的正确答案。因此,请求请告诉我每个用例。
【问题讨论】:
-
Android 的构建不适合任何 MV* 模式,强制应用采用其中一种模式并不意味着应用会更好地运行。所以只需遵循官方网站的指导:developer.android.com/guide 虽然您可以使用其中一种 MV* 模式,但请记住先使用 Android,然后再使用模式
-
我认为经典的 MVC 更像这样:用户输入由控制器接收。控制器更新模型。 View 观察模型的变化,并根据这些变化进行更新。此外,您在 MVP 中包含了一个控制器,我认为这是不正确的。
-
我相信我只会说我更喜欢 mvvm 而不是其他所有东西,因为我有更多的经验,它需要更少的代码并得到官方谷歌库的支持,但对于新开发人员来说可能很难快速输入项目作为订阅不是那么容易遵循。对于大型 CRM 系统,我觉得 MVP 更好,因为它更加明确和严格。
标签: android model-view-controller mvvm architecture mvp