Provider MVVM架构
MVVM架构分为M(Model)、V(View)、VM(ViewModel)三个部分,他们分别处理自己的分工,在View和Model之间使用ViewModel作为中介者,使View和Model不受业务逻辑影响。
Model(数据模型):
代表应用程序的数据源,它可以是从数据库、网络请求或其他来源获取的数据。Model 通常是不包含任何视图和逻辑的纯数据对象。
View(视图):
代表应用程序的用户界面,通常由各种 Flutter Widgets 构成。View 负责展示数据和与用户进行交互,但不包含任何业务逻辑。
ViewModel(视图模型):
作为 View 和 Model 之间的桥梁,负责处理 View 的状态和用户的交互,并根据业务逻辑从 Model 中获取数据。ViewModel 通常包含状态管理、数据处理、业务逻辑和与数据层的交互等功能。
MVVM 优点:
分离关注点:MVVM模式可以很好地将应用程序的逻辑(ViewModel)与界面(View)进行分离,在开发过程中更容易维护和测试。
可测试性:ViewModel 是纯逻辑的部分,不依赖于具体的 UI 组件,因此可以使用单元测试来测试 ViewModel 的行为和对数据的处理。
数据绑定:MVVM 模式通过数据绑定实现了 View 和 ViewModel 的自动同步。当 ViewModel 中的数据发生变化时,View 会自动更新,这简化了数据更新的处理,同时提高了开发效率。
松耦合:ViewModel 不依赖于具体的 View 实现,可以在不同的平台和技术栈中重用,提高了代码的可重用性。
MVVM 缺点:
学习成本:MVVM 是一种高级的架构模式,相对于传统的 MVC 或 MVP 模式,学习和理解 MVVM 需要花费一定的时间和精力。
过度设计:在小型项目中,使用 MVVM 可能会导致过度设计,增加了不必要的复杂性。MVVM 适用于复杂的业务逻辑和大型应用程序。
数据流管理:在 MVVM 中,数据流的管理可能会变得复杂。如果不妥善管理数据流,可能会导致数据流混乱和性能问题。
MVVM的5主要类:
Service: 网络请求类
Model: 主要负责转换模型
View: 主要负责呈现UI,通过ViewModel获取数据并展示
Widgets: 单独的UI模块分离
ViewModel: 处理业务逻辑,将数据绑定给View展示
Provider MVVM架构的更多相关文章
- MVVM架构~目录
回到占占推荐博客索引 MVVM在概念上是真正将页面与数据逻辑分离的模式,在开发方式上,它是真正将前台代码开发者(JS+HTML)与后台代码开发者分离的模式(asp,asp.net,php,jsp).在 ...
- MVVM架构~Knockoutjs系列之验证机制的引入
返回目录 对于Knockoutjs本身来说,没有提供验证模块,不过,有第三方的扩展,就像你为jquery库作extensions一样,这讲中我将介绍一个Knockout插件扩展,knockout.va ...
- MVVM架构~使用boxy和knockoutjs实现编辑功能
返回目录 这个功能我认为非常有用,尤其在后台管理系统中,它对用户来说,使用体验这块非常不错,下面是它的截图
- ReactiveCocoa常见操作方法介绍/MVVM架构思想
1.ReactiveCocoa常见操作方法介绍. 1.1 ReactiveCocoa操作须知 所有的信号(RACSignal)都可以进行操作处理,因为所有操作方法都定义在RACStream.h中, ...
- MVVM架构的一次实践,重写iOS头条客户端
前言: 一个iOS头条APP,使用MVVM架构实现,代码中有注释,封装了AFN网络请求,解媾代码,使用起来非常方便.用最经典的TableView展示,后续不断更新,喜欢就star或fork一下,有问题 ...
- MVVM架构~knockoutjs系列之表单添加(验证)与列表操作源码开放
返回目录 本文章应该是knockoutjs系列的最后一篇了,前几篇中主要讲一些基础知识,这一讲主要是一个实际的例子,对于一个对象的添加与编辑功能的实现,并将项目源代码公开了,共大家一起学习! knoc ...
- WPF MVVM 架构 Step By Step(6)(把actions从view model解耦)
到现在为止,我们创建了一个简单的MVVM的例子,包含了实现了的属性和命令.我们现在有这样一个包含了例如textbox类似的输入元素的视图,textbox用绑定来和view model联系,像点击but ...
- iOS MVVM架构总结
为什么使用MVVM iOS中,我们使用的大部分都是MVC架构.虽然MVC的层次明确,但是由于功能日益的增加.代码的维护,使得更多的代码被写在了Controller中,这样Controller就显得非常 ...
- Android -------- MVC,MVP 和 MVVM 架构设计模式
MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用.它本身很容易理解,但是要讲清楚,它与衍生的 MVP 和 MVVM 架构的区别就不容易了. 一.MVC MV ...
- [转]MVVM架构~mvc,mvp,mvvm大话开篇
MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负 责显示.作为一种新的模式,MVP与MVC有着一 ...
随机推荐
- Writing your first Django app, part 1
Let's learn by example. Throughout this tutorial, we'll walk you through the creation of a basic pol ...
- [SWPUCTF 2021 新生赛]sql
看到网站上写着参数是wllm,就用wllm=1试了一下,发现是SQL注入 查找字段数时,提示请勿非法操作 说明空格出现过滤,可以用/**/绕过 http://1.14.71.254:28347/?wl ...
- Treap树学习笔记
等我写完. 普通fhq treap: enum { Maxn = 1000005 }; struct FHQTreap { int lson[Maxn], rson[Maxn], data[Maxn] ...
- js数据结构--字典
<!DOCTYPE html> <html> <head> <title></title> </head> <body&g ...
- spring---反射(java.lang.reflect)
反射简介 反射是Java的高级特性之一,但是在实际的开发中,使用Java反射的案例却非常的少,但是反射确实在底层框架中被频繁的使用. 比如:JDBC中的加载数据库驱动程序,Spring框架中加载bea ...
- 使用 LCM LoRA 4 步完成 SDXL 推理
LCM 模型 通过将原始模型蒸馏为另一个需要更少步数 (4 到 8 步,而不是原来的 25 到 50 步) 的版本以减少用 Stable Diffusion (或 SDXL) 生成图像所需的步数.蒸馏 ...
- 3款高评价的.Net开发的WMS系统推荐
本文简介 WMS仓库管理系统是一款专业的仓库管理系统,旨在帮助企业实现仓储管理的智能化.信息化和自动化.通过该系统,企业可以实现对仓库的进货.出货.库存等各个环节的全面把控,提高仓储管理水平,降低运营 ...
- R数据分析:集成学习方法之随机生存森林的原理和做法,实例解析
很久很久以前给大家写过决策树,非常简单明了的算法.今天给大家写随机(生存)森林,随机森林是集成了很多个决策数的集成模型.像随机森林这样将很多个基本学习器集合起来形成一个更加强大的学习器的这么一种集成思 ...
- JavaScript 生产者消费者模型
因为node使用单线程的方式实现,所以,在此使用定时器timer取代线程thread来实现生产者消费者模型. 1 var sigintCount = 0; 2 var productArray = [ ...
- SpringBoot-Validation优雅实现参数校验
1.是什么? 它简化了 Java Bean Validation 的集成.Java Bean Validation 通过 JSR 380,也称为 Bean Validation 2.0,是一种标准化的 ...