MVC 与 MVP 与 MVVM 用例
MVC vs MVP vs MVVM use cases
我和 android 开发人员,我在我的应用程序中使用过所有这三种架构模式。此外,我在 Whosebug 上浏览了几个 post,了解它们之间的区别。我的理解可能不是 100% 正确,但这是我目前所知道的简要情况。
MVC - 控制器接收用户输入。控制器更新模型然后通知视图更新自身。
MVP - View 获取用户输入并通知 Presenter。 Presenter从Model中获取数据,然后发送给View。 Presenter 和 View 是一对一的关系。
MVVM - View 接收用户输入。 ViewModel 从 Model 生成数据并输出数据流,任何订阅它的 View 都可以使用该数据。 View 和 ViewModel 是一对多的关系。
问题是在面试中很多次我都被问到什么时候使用哪种模式的问题。我认为面试官想知道的是应用程序的类型(如银行、电子商务等)及其合适的架构模式。或者至少一些关于为什么我想在一个应用程序中使用 MCV 而在另一个应用程序中使用 MVP 以及 MVVM 的具体解释。
我做了很好的研究,但在互联网上找不到任何合适的答案来讨论每种模式的用例。因此,请求请告诉我每个的用例。
据我所知:
MVC:Model View Controller 是Android开发的传统老方法。这是 Android 开发刚开始时使用的,并被热衷使用了几年。在这段时间里,唯一广为人知的模式是 MVC。
因此,大多数旧应用程序都是从 MVC 开始的,但随着代码库的增加,控制器 (Activities/Fragments) 变得庞大,其中包含大量业务逻辑和网络请求以及异步任务。因此,由于三者之间的高依赖性,此类应用程序变得难以超时维护并且非常难以测试。
因此,如果您的应用程序非常小并且您不想遵循新的体系结构模式或者对那些使用 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 和干净的架构(基于用例)。在我看来,应用产品类型不会改变架构需求。决定它的是复杂性和规模。您的安全要求因产品而异。
我和 android 开发人员,我在我的应用程序中使用过所有这三种架构模式。此外,我在 Whosebug 上浏览了几个 post,了解它们之间的区别。我的理解可能不是 100% 正确,但这是我目前所知道的简要情况。
MVC - 控制器接收用户输入。控制器更新模型然后通知视图更新自身。
MVP - View 获取用户输入并通知 Presenter。 Presenter从Model中获取数据,然后发送给View。 Presenter 和 View 是一对一的关系。
MVVM - View 接收用户输入。 ViewModel 从 Model 生成数据并输出数据流,任何订阅它的 View 都可以使用该数据。 View 和 ViewModel 是一对多的关系。
问题是在面试中很多次我都被问到什么时候使用哪种模式的问题。我认为面试官想知道的是应用程序的类型(如银行、电子商务等)及其合适的架构模式。或者至少一些关于为什么我想在一个应用程序中使用 MCV 而在另一个应用程序中使用 MVP 以及 MVVM 的具体解释。
我做了很好的研究,但在互联网上找不到任何合适的答案来讨论每种模式的用例。因此,请求请告诉我每个的用例。
据我所知:
MVC:Model View Controller 是Android开发的传统老方法。这是 Android 开发刚开始时使用的,并被热衷使用了几年。在这段时间里,唯一广为人知的模式是 MVC。
因此,大多数旧应用程序都是从 MVC 开始的,但随着代码库的增加,控制器 (Activities/Fragments) 变得庞大,其中包含大量业务逻辑和网络请求以及异步任务。因此,由于三者之间的高依赖性,此类应用程序变得难以超时维护并且非常难以测试。
因此,如果您的应用程序非常小并且您不想遵循新的体系结构模式或者对那些使用 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 和干净的架构(基于用例)。在我看来,应用产品类型不会改变架构需求。决定它的是复杂性和规模。您的安全要求因产品而异。