Provider MVVM架构

发布时间 2023-12-30 17:33:45作者: 鲤斌

MVVM架构分为M(Model)、V(View)、VM(ViewModel)三个部分,他们分别处理自己的分工,在ViewModel之间使用ViewModel作为中介者,使ViewModel不受业务逻辑影响。

Model(数据模型):

代表应用程序的数据源,它可以是从数据库、网络请求或其他来源获取的数据。Model 通常是不包含任何视图和逻辑的纯数据对象。

View(视图):

代表应用程序的用户界面,通常由各种 Flutter Widgets 构成。View 负责展示数据和与用户进行交互,但不包含任何业务逻辑。

ViewModel(视图模型):

作为 View 和 Model 之间的桥梁,负责处理 View 的状态和用户的交互,并根据业务逻辑从 Model 中获取数据。ViewModel 通常包含状态管理、数据处理、业务逻辑和与数据层的交互等功能。

MVVM 优点:
  1. 分离关注点:MVVM模式可以很好地将应用程序的逻辑(ViewModel)与界面(View)进行分离,在开发过程中更容易维护和测试。

  2. 可测试性:ViewModel 是纯逻辑的部分,不依赖于具体的 UI 组件,因此可以使用单元测试来测试 ViewModel 的行为和对数据的处理。

  3. 数据绑定:MVVM 模式通过数据绑定实现了 View 和 ViewModel 的自动同步。当 ViewModel 中的数据发生变化时,View 会自动更新,这简化了数据更新的处理,同时提高了开发效率。

  4. 松耦合:ViewModel 不依赖于具体的 View 实现,可以在不同的平台和技术栈中重用,提高了代码的可重用性。

MVVM 缺点:
  1. 学习成本:MVVM 是一种高级的架构模式,相对于传统的 MVC 或 MVP 模式,学习和理解 MVVM 需要花费一定的时间和精力。

  2. 过度设计:在小型项目中,使用 MVVM 可能会导致过度设计,增加了不必要的复杂性。MVVM 适用于复杂的业务逻辑和大型应用程序。

  3. 数据流管理:在 MVVM 中,数据流的管理可能会变得复杂。如果不妥善管理数据流,可能会导致数据流混乱和性能问题。

MVVM的5主要类:

Service: 网络请求类

Model: 主要负责转换模型

View: 主要负责呈现UI,通过ViewModel获取数据并展示

Widgets: 单独的UI模块分离

ViewModel: 处理业务逻辑,将数据绑定给View展示