flutter中MVVM和MVC架构有什么实际区别

问题描述 投票:0回答:1

我读过很多关于此的文章,但没有找到任何好的答案。有人可以给我参考 github 上的任何项目或任何可以清楚解释它的文章吗?

我试图找到一篇好文章来学习flutter中MVVM和MVC架构的区别。但他们都没有能够清楚地解释这一点。我也看了 youtube 视频,但仍然不清楚区别。

flutter dart model-view-controller mvvm architecture
1个回答
0
投票

MVC(模型-视图-控制器)和MVVM(模型-视图-视图模型)是 Flutter 中用于管理数据流的架构。

Flutter 中的 MVC(模型-视图-控制器):

  • 模型:管理应用程序的数据和业务逻辑。
  • View:向用户显示数据的UI部分。
  • 控制器:模型和视图之间的中介。它接收来自视图的输入,对其进行处理(通常更新模型),并相应地更新视图。

Flutter 中的 MVVM(模型-视图-视图模型):

  • 模型:与MVC相同,它保存业务逻辑和数据。
  • View:向用户显示数据的UI部分。
  • ViewModel: 处理所有逻辑并与模型通信的中介。 View 侦听 ViewModel 中的更改并做出相应反应)。

以下是 Flutter 中 MVC 和 MVVM 的比较:

方面 MVC(模型-视图-控制器) MVVM(模型-视图-视图模型)
Controller/ViewModel 的角色 Controller 处理用户输入,更新Model,并控制View ViewModel保存状态和逻辑,与Model交互,并通过状态管理更新View
视图控制器/视图模型关系 ViewController 紧密耦合,因为 StatefulWidget 通常同时处理 UI 和逻辑。 ViewViewModel 是松散耦合的,View 以反应方式观察 ViewModel 的变化。
数据流 数据从模型流向控制器,后者手动更新视图 ViewModel 管理数据,View 自动侦听 ViewModel 中的更改。
状态管理 状态在 StatefulWidget 内部进行管理,通常会导致逻辑和 UI 紧密绑定,这使得关注点分离变得更加困难。 状态由 ViewModel 使用状态管理技术(
Provider
Riverpod
GetX
)进行处理,使逻辑远离 View
关注点分离 由于 StatefulWidget 同时充当控制器和视图,UI 和业务逻辑之间的分离有限。 清晰的关注点分离。 ViewModel 管理所有逻辑,View 只负责 UI 渲染。
UI更新机制 Model 发生变化时,Controller 必须手动更新 View,通常是通过在
StatefulWidget
中调用 setState()
View 监听 ViewModel 中的更改,它使用
notifyListeners()
或流自动处理状态更新,具体取决于方法。
可测试性 更难测试,因为逻辑混合在 UI(视图)中。 更容易测试,因为 ViewModel 包含与 UI 分离的业务逻辑。
可扩展性 适合中小型项目。 由于逻辑和状态是分离的,因此可以很好地扩展到较大的项目,从而可以更轻松地管理复杂的 UI 和功能。
状态和数据绑定 View 不会自动反映Model 中的更改。 Controller 必须手动触发 UI 更新。 View 自动反映 ViewModel 中的更改,后者管理状态并触发 UI 更新。
何时使用 最适合较小的应用程序。 更适合更大、更复杂的应用程序。
示例 MVC架构示例 MVVM架构示例
© www.soinside.com 2019 - 2024. All rights reserved.