MVC vs MVP vs MVVM用例

时间:2019-01-09 09:08:06

标签: android model-view-controller mvvm architecture mvp

我是android开发人员,我已经在我的应用程序中处理了所有这三种架构模式。我也经历了关于stackoverflow的几个帖子,关于每个帖子的区别。我的理解可能不是100%正确,但这是我到目前为止简要了解的内容。

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

  2. MVP-视图获取用户输入并通知Presenter。 Presenter从模型获取数据,然后将其发送到View。 Presenter和View具有一对一的关系。

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

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

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

1 个答案:

答案 0 :(得分:3)

据我所知:

MVC :模型视图控制器是Android开发的传统旧方法。在Android开发刚刚开始时就使用了它,并且已经使用了几年。这一次,唯一的知名模式是MVC。

因此,大多数所有旧应用程序都是从MVC开始的,但是随着代码库的增加,控制器(活动/片段)变得体积庞大,其中包含许多业务逻辑和网络请求以及异步任务。因此,由于这三个应用程序之间的高度依赖关系,它们很难维持加班时间,并且很难进行测试。

因此,如果您的应用程序很小,并且您不希望采用任何新的体系结构模式或对使用MVC的模式不了解0,但我强烈建议您此时不遵循MVC。

MVP ->由于MVC应用程序变得难以维护和测试,因此应用程序向MVP过渡。

Model View Presenter试图解决MVC问题,并将业务逻辑转移到了Presenter。此处的演示者仅执行Interface动作,并且不知道要尝试更新的View。因此,由于演示者与控制器不相似,因此我们可以轻松地测试演示者和模型。因此,我们获得了测试和维护上的好处,但同时也带来了一个问题,即现在的演示者很聪明。他们最终开始变得笨重。造成了类似的问题。

在android中,应用也需要保持应用状态。 MVC和MVP并非开箱即用,具有状态保存功能,您需要编写其他代码来维护状态。

另一方面,

MVVM 是最受欢迎的。模型视图viewModel是新的android体系结构。

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

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

网络连接位于存储库中。因此,代码在您的片段或活动中更加清晰。所有这三个组件都易于测试和维护。

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

当您说什么应用程序应该使用什么时。如果应用程序规模庞大且复杂,则强烈建议使用MVVM,您还可以研究其他流行的体系结构组件,例如MVI和干净的体系结构(基于用例)。我认为,应用程序产品类型不会改变体系结构要求。决定它的是复杂性和大小。您的安全要求会根据产品而有所不同。