MVC vs MVP vs MVVM 用例

Ash*_*mar 3 architecture model-view-controller mvp android mvvm

我是 android 开发人员,我在我的应用程序中研究了所有这三种架构模式。此外,我已经阅读了有关 stackoverflow 的几篇关于每个帖子的差异的帖子。我的理解可能不是 100% 正确,但这是我到目前为止所知道的。

  1. MVC - 控制器接收用户输入。控制器更新模型然后告诉视图更新自身。

  2. MVP - View 获取用户输入并通知 Presenter。Presenter 从 Model 中获取数据,然后将其发送到 View。Presenter 和 View 是一对一的关系。

  3. MVVM - View 接收用户输入。ViewModel 从 Model 生成数据并输出数据流,任何订阅它的 View 都可以使用该数据。View 和 ViewModel 是一对多的关系。

问题是在面试中很多次我都被问到这个问题来告诉我什么时候使用哪种模式。我认为面试官想知道的是应用程序的类型(如银行、电子商务等)及其适当的架构模式。或者至少对为什么我想在一个应用程序中使用 MCV 而在另一个应用程序中使用 MVP 以及 MVVM 的一些具体解释。

我做了很好的研究,但在互联网上找不到任何关于每种模式用例的正确答案。因此,请告诉我每个用例的用例。

小智 8

据我所知:

MVC : Model View Controller 是 Android 开发的传统旧方式。这是在 Android 开发刚开始时使用的,并且被狂热地使用了几年。在这个时候,唯一众所周知的模式是 MVC。

因此,大多数旧应用程序都以 MVC 启动,但随着代码库的增加,控制器(活动/片段)变得庞大,其中包含大量业务逻辑和网络请求以及异步任务。因此,由于三者之间的高度依赖性,此类应用程序变得难以维护并且很难测试。

因此,如果您的应用程序非常小,并且您不想遵循新的架构模式,或者对使用 MVC 的人的理解为 0,但我强烈建议此时不要遵循 MVC。

MVP -> 随着 MVC 应用程序变得难以维护和测试,应用程序向 MVP 过渡。

Model View Presenter 试图解决 MVC 的问题,并将表示和业务逻辑移到 Presenter。这里的演示者只执行界面操作,并不知道它试图更新的视图。因此,由于演示者与控制器不同,我们可以轻松测试演示者和模型。因此,我们获得了测试和维护的好处,但同时也产生了一个问题,即现在演示者是聪明的。它们最终开始变得笨重。创建一个类似的问题。

同样在android中,应用程序需要维护应用程序状态。MVC 和 MVP 没有开箱即用的状态保存功能,您需要编写额外的代码来维护状态。

另一方面,MVVM是最受欢迎的。模型视图 viewModel 是新的 android 架构。

您可以详细了解并了解以下内容:

https://developer.android.com/jetpack/docs/guide

网络连接存在于存储库中。因此,您的片段或活动中的代码要干净得多。所有三个组件都易于测试和维护。

最大的优势之一是您具有性能优势,因为它具有开箱即用的状态保存机制,因为 ViewModel 遵循单例模式,您可以通过使用 ViewProviders 并通过它创建实例来实现这一点。

当你说什么应用程序应该使用什么。如果应用程序规模庞大且复杂,强烈建议使用 MVVM,您还可以查看其他流行的架构组件,如 MVI 和干净的架构(基于用例)。在我看来,应用程序产品类型不会改变架构要求。决定它的是复杂性和大小。您的安全要求因产品而异。