首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

聊聊iOS开发之MVVM的架构设计

MVVM概述 从图中我们可以看到MVVM的关系基本是:View C ViewModel Model, 严格来说MVVM其实是MVCVM。...它是从 MVC 的 controller 中抽取出来的展示逻辑,负责从 model中获取 view 所需的数据, 转换成 view可以展示的数据,并暴露公开的属性和命令供 view 进行绑定。...(ViewModel的数据可以显示到View上, View上的操作同样会引起ViewModel的变化),降低了ViewModel和View的耦合度。...可以看出视图 SUGoodsCell直接引用了模型SUGoods,这就有悖了MVVM的初衷:view和 view controller 都不能直接引用model,而是引用视图模型(viewModel)...想必大家还有一个疑惑,数据-模型(SUGoods)是否要通过属性的方式暴露在子视图模型(SUGoodsItemViewModel)的.h文件中?

8.8K92

一篇可能会让你爱上MVVM与ReactiveCocoa的文章

余下的"VM",其实是一个整体,指的是ViewModel,视图数据模型.如果你以前的许多代码都放在Model中,比如没有数据自动联网请求相关的数据什么的话,那你的那个Model其实和这个ViewModel...变革: 从MVC到MVVM 接下来,会以第一篇文章的示例为基础,将逐步改造为MVVM模式....新增ViewModel: YFBlogDetailViewModel 表示文章的视图模型;YFBlogListViewModel 表示 分类文章列表的视图模型; YFBlogListItemViewModel...YFBlogListItemViewModel 博客列表单个单元格的视图模型 添加属性intro: 这个viewModel 供展示博客列表中的单个单元格使用,但根据目前的UI显示,只需要一个字段即可,我们给它命名为...添加属性blogListItemViewModels,NSArray 类型,用于存储文章列表单元格的视图模型.视图部分检测它的变化,然后动态刷新视图即可.

1.3K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MVPMVCMVVM

    但是MVC的最大弊端就是C的代码没法复用,所以能把C层的代码拆出来就尽量拆,我们来看看现在C层的功能还有哪些了 1.作为View和Model的中介者,从model获取数据,经过数据加工,渲染到view上面显示...在 MVP 中,Presenter 可以理解为松散的控制器,其中包含了视图的 UI 业务逻辑,所有从视图发出的事件,都会通过代理给 Presenter 进行处理;同时,Presenter 也通过视图暴露的接口与其进行通信...还有一点,ViewModel层是可以持有Model的。 Model层:数据模型与持久化抽象模型。数据模型很好理解,就是从服务器拉回来的JSON数据。...(以前做公司iPad的时候就深深感觉到,全部在VC里面是多么的痛苦和重新开发一个没有啥区别)。 3.兼容MVC MVVM是MVC的一个升级版,目前的MVC也可以很快的转换到MVVM这个模式。...可能重写的方法比较多,因为涉及到一些数据的转换以及和controller之间的通信。 2.调用复杂度增加 由于数据都是从viewModel来,想想突然来了一个新人,一看代码,不知道真实的模型是谁。

    49720

    “终于懂了“系列:Jetpack AAC完整解析(四)MVVM - Android架构探索!

    点击上方胡飞洋可以关注哦~ 前面三篇介绍了Jetpack 架构组件中 最重要 的部分:生命周期组件-Lifecycle、感知生命周期的数据组件-LiveData、视图模型组件-ViewModel。...二、Android开发中的架构 具体到Android开发中,开发架构就是描述 视图层、逻辑层、数据层 三者之间的关系和实施: 视图层:用户界面,即界面的展示、以及交互事件的响应。...2.3 MVVM MVVM,Model-View-ViewModel,职责分类如下: Model,模型层,即数据模型,用于获取和存储数据。...View,视图,即Activity/Fragment ViewModel,视图模型,负责业务逻辑。 注意,MVVM这里的ViewModel就是一个名称,可以理解为MVP中的Presenter。...另外,注意到暴露的获取LiveData的方法 返回的是LiveData类型,即不可变的,而不是MutableLiveData,好处是避免数据在外部被更改。

    2.1K20

    【Vue.js】015-Vue:Vue中的MVVM、Vue的options选项

    MVVM的视图模型是一个值转换器, 这意味着视图模型负责从模型中暴露(转换)数据对象,以便轻松管理和呈现对象。在这方面,视图模型比视图做得更多,并且处理大部分视图的显示逻辑。...MVVM以相同的方式抽象出视图的状态和行为,但PM以不依赖于特定用户界面平台的方式抽象出视图(创建了视图模型); MVVM和PM都来自MVC模式; MVVM由微软架构师Ken Cooper和Ted Peters...ZK(Java写的一个Web应用框架)和KnockoutJS(一个JavaScript库)使用model-view-binder; 简化:MVVM是MVC的改进版; MVC中的M就是单纯的从网络获取回来的数据模型...包含UIView以及UIViewController,View层是可以持有ViewModel的; ViewModel层:视图适配器。暴露属性与View元素显示内容或者元素状态一一对应。...一般情况下ViewModel暴露的属性建议是readOnly的,至于为什么,我们在实战中会去解释。还有一点,ViewModel层是可以持有Model的; Model层:数据模型与持久化抽象模型。

    4800

    iOS面试题:MVVM和MVC的区别

    MVVM和MVC的区别 1. MVC MVC的弊端 厚重的View Controller M:模型model的对象通常非常的简单。根据Apple的文档,model应包括数据和操作数据的业务逻辑。...业务逻辑很明显不归入view,视图本身没有任何业务。 C:控制器controller。Controller是app的“胶水代码”:协调模型和视图之间的所有交互。...控制器负责管理他们所拥有的视图的视图层次结构,还要响应视图的loading、appearing、disappearing等等,同时往往也会充满我们不愿暴露的model的模型逻辑以及不愿暴露给视图的业务逻辑...都不能直接引用model,而是引用视图模型(viewModel) viewModel 是一个放置用户输入验证逻辑,视图显示逻辑,发起网络请求和其他代码的地方 使用MVVM会轻微的增加代码量,但总体上减少了代码的复杂性...2.3 MVVM 的优势 低耦合:View 可以独立于Model变化和修改,一个 viewModel 可以绑定到不同的 View 上 可重用性:可以把一些视图逻辑放在一个 viewModel里面,让很多

    1.4K30

    技术趋势:是什么让MVC悄然消失的?「建议收藏」

    MVC中的M就是单纯的从网络获取回来的数据模型,V指的我们的视图界面,而C就是我们的ViewController。...这张图是从网上找的,MVVM还在学习阶段,后续补一张自己的 从以上的架构图中,我们可以很清晰的梳理出各自的分工。 View层: 视图展示。...包含UIView以及UIViewController,View层是可以持有ViewModel的。 ViewModel层: 视图适配器。暴露属性与View元素显示内容或者元素状态一一对应。...Model层: 数据模型与持久化抽象模型。数据模型很好理解,就是从服务器拉回来的JSON数据。而持久化抽象模型暂时放在Model层,是因为MVVM诞生之初就没有对这块进行很细致的描述。...可惜在MVVM这几个英文单词中并没有它的一席之地,它的最主要作用是在View和ViewModel之间做了双向数据绑定。如果MVVM没有Binder,那么它与MVC的差异不是很大。

    78620

    WPF自学入门(十)WPF MVVM简单介绍

    一、MVVM介绍   MVVM是Model-View-ViewModel(模型-视图-视图模型)的缩写形式,它通常被用于WPF或Silverlight开发。...2、ViewModel是一个C#类,负责收集需要绑定的数据和命令,聚合Model对象,通过View类的DataContext属性绑定到View,同时也可以处理一些UI逻辑。   ...三者之间的关系:View对应一个ViewModel,ViewModel可以聚合N个Model,ViewModel可以对应多个View 二、MVVM的优势 MVVM的根本思想就是界面和业务功能进行分离...在实际的业务场景中我们经常会遇到客户对界面提出建议要求修改,使用MVVM模式开发,当设计的界面不满足客户时,我们仅仅只需要对View作修改,不会影响到ViewModel中的功能代码,减少了犯错的机会。...因为我们在视图模型里暴露了属性,我们显然会想使在代码里改变的用户名和公司名自动的显示在视图上 ? 后台代码: ? 运行结果: ?

    2.5K20

    技术趋势:是什么让MVC悄然消失的?

    MVC中的M就是单纯的从网络获取回来的数据模型,V指的我们的视图界面,而C就是我们的ViewController。...这张图是从网上找的,MVVM还在学习阶段,后续补一张自己的 从以上的架构图中,我们可以很清晰的梳理出各自的分工。 View层: 视图展示。...包含UIView以及UIViewController,View层是可以持有ViewModel的。 ViewModel层: 视图适配器。暴露属性与View元素显示内容或者元素状态一一对应。...一般情况下ViewModel暴露的属性建议是readOnly的,至于为什么,我们在实战中会去解释。还有一点,ViewModel层是可以持有Model的。 Model层: 数据模型与持久化抽象模型。...数据模型很好理解,就是从服务器拉回来的JSON数据。而持久化抽象模型暂时放在Model层,是因为MVVM诞生之初就没有对这块进行很细致的描述。

    88020

    MVVM+数据绑定,让你的Android应用飞起来,MVVM+数据绑定技巧,打造Android应用的数据流水线!

    在该模式中,视图(View)负责展示用户界面,模型(Model)管理数据和业务逻辑,而视图模型(ViewModel)则作为两者的中介,实现了数据的转换和逻辑的处理。...实现:通常通过创建Java类或Kotlin类来表示数据模型,例如用户信息、商品列表等。 2. View(视图) 定义:View层负责展示数据和与用户进行交互。...ViewModel(视图模型) 定义:ViewModel层连接Model和View,作为它们之间的桥梁。它负责从Model中获取数据,并将数据转换为View层可以直接使用的形式。...单向数据绑定又可以分为两种:从ViewModel到View的下行绑定和从View到ViewModel的上行绑定。...下行绑定用于将数据从ViewModel传递到View进行展示,而上行绑定则用于处理用户交互事件并将结果反馈到ViewModel。

    13210

    MVVM模式

    MVVM模式 MVVM全称Model-View-ViewModel是基于MVC和MVP体系结构模式的改进,MVVM就是MVC模式中的View的状态和行为抽象化,将视图UI和业务逻辑分开,更清楚地将用户界面...在MVVM中的ViewModel作为绑定器将视图层UI与数据层Model链接起来,在Model更新时,ViewModel通过绑定器将数据更新到View,在View触发指令时,会通过ViewModel传递消息到...Model,ViewModel像是一个黑盒,在开发过程中只需要关注于呈现UI的视图层以及抽象模型的数据层Model,而不需要过多关注ViewModel是如何传递的数据以及消息。...ViewModel ViewModel是暴露公共属性和命令的视图的抽象。 ViewModel中的绑定器在视图和数据绑定器之间进行通信。...优点 低耦合: 视图View可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。

    1.2K10

    MVVM模式的理解

    MVVM模式的理解 MVVM全称Model-View-ViewModel是基于MVC和MVP体系结构模式的改进,MVVM就是MVC模式中的View的状态和行为抽象化,将视图UI和业务逻辑分开,更清楚地将用户界面...在MVVM中的ViewModel作为绑定器将视图层UI与数据层Model链接起来,在Model更新时,ViewModel通过绑定器将数据更新到View,在View触发指令时,会通过ViewModel传递消息到...Model,ViewModel像是一个黑盒,在开发过程中只需要关注于呈现UI的视图层以及抽象模型的数据层Model,而不需要过多关注ViewModel是如何传递的数据以及消息。...ViewModel ViewModel是暴露公共属性和命令的视图的抽象。 ViewModel中的绑定器在视图和数据绑定器之间进行通信。...优点 低耦合: 视图View可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。

    2.2K30

    iOS-MVVM 模式简单演练

    本篇只是简单介绍一下MVVM的大致模式,每个人对每种架构模式有自己的理解,本文也是单纯的从获取新闻列表数据,并将其显示到界面上而已。暂时不做过多的考虑。...---- MVVM 简介 看下MVVM大致模式图 : 相当于在View、ViewController和Model之间多了一层ViewModel。那么多出这层起到了什么作用呢?好处又好在哪里呢?...(处理业务逻辑) QQNewsListViewModel 新闻列表视图模型(获取数据、加工数据) QQNetworkManager网络请求工具类 QQNetworkManager+QQNews...loadNewsDataCompletion:(void (^)(BOOL isSuccessed))completion; @end 在QQNewsListViewModel.m中进行数据加工,将拿到的字典数组转化为视图模型数组...但是我觉得实际开发中,很少能碰到这么简单的业务逻辑的,如果业务逻辑多起来了。这种模式就会突显出它的好处了。 Demo 传送门 : MVVM

    86150

    1. VUE完整系统简介

    MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。...MVVM的视图模型是一个值转换器,这意味着视图模型负责从模型中暴露(转换)数据对象,以便轻松管理和呈现对象。在这方面,视图模型比视图做得更多,并且处理大部分视图的显示逻辑。...MVVM的优点     MVVM模式和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大优点 低耦合。...视图       就像在MVC和MVP模式中一样,视图是用户在屏幕上看到的结构、布局和外观(UI)。 视图模型       视图模型是暴露公共属性和命令的视图的抽象。...绑定器 声明性数据和命令绑定隐含在MVVM模式中。绑定器使开发人员免于被迫编写样板逻辑来同步视图模型和视图。在微软的堆之外实现时,声明性数据绑定技术的出现是实现该模式的一个关键因素   4.

    2K10

    关于 MVVM和MVC的这些,你知道吗?

    MVVM的视图模型是一个值转换器, 这意味着视图模型负责从模型中暴露(转换)数据对象,以便轻松管理和呈现对象。在这方面,视图模型比视图做得更多,并且处理大部分视图的显示逻辑。...MVVM以相同的方式抽象出视图的状态和行为, 但PM以不依赖于特定用户界面平台的方式抽象出视图(建立了视图模型)。 MVVM和PM都来自MVC模式。...^2 MVC到MVVM 的发展历程 二十世纪八十年代施乐帕克实验室提出了MVC的概念,MVC的全称即Model-View-Controller,是模型(model)一视图(view)一控制器(controller...[^4] 虽然MVVM框架和之前的MVC、MVP模式的目的相同,即完成视图(View)和模型(Model)的分离,但它却有着明显的优势。...发布 - 订阅模式非常适合于 MVVM 双向绑定中多个视图绑定到同一个数据模型的情形。

    79500

    【拓展】700- MVVM模式理解

    MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自动传递给...ViewModel负责连接 View 和 Model,保证视图和数据的一致性,这种轻量级的架构让前端开发更加高效、便捷。 为什么会出现 MVVM 呢?...MVC 即 Model-View-Controller 的缩写,就是 模型—视图—控制器,也就是说一个标准的Web 应用程式是由这三部分组成的: View :用来把数据以某种方式呈现给用户 Model...MVVM 由 Model、View、ViewModel 三部分构成,Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑;View 代表UI 组件,它负责将数据模型转化成UI 展现出来...在MVVM架构下,View 和 Model 之间并没有直接的联系,而是通过ViewModel进行交互,Model 和 ViewModel 之间的交互是双向的, 因此View 数据的变化会同步到Model

    1.1K41

    MVVM与MVC在项目开发中的应用对比

    MVC的运作机制在MVC模式中,用户通过视图发送请求到控制器,控制器根据请求调用相应的模型进行处理,模型处理完毕后,将结果返回给控制器,控制器再更新视图以反映最新的数据状态。...MVVM模式详解MVVM的核心理念MVVM模式是对MVC模式的一种改进,它进一步将视图的状态和行为抽象化,通过ViewModel来管理视图的数据和逻辑。...ViewModel(视图模型):视图模型是MVVM模式的核心,它充当视图和模型之间的桥梁。视图模型负责处理视图的逻辑和状态,并将模型的数据转换为视图可以显示的格式。...ViewModel(视图模型): 使用Vue.js的组件和数据绑定功能,定义视图模型,处理视图的逻辑和状态。例如,定义一个商品列表组件,通过数据绑定展示商品信息,并处理分页和筛选逻辑。...通过数据绑定和计算属性,视图模型自动更新视图,实现了商品列表的分页功能。项目成果通过采用MVVM模式,项目取得了以下成果:代码结构清晰: MVVM模式的分离使得代码结构更加清晰,便于理解和维护。

    9000

    聊聊iOS中的 MVC、MVP、MVVM以及 VIPER等代码组织方式

    - Controller/Presenter/ViewModel(控制器/展示器/视图模型) 它是 Model 和 View 之间的胶水或者说是中间人。...在 MVP 中,Presenter 可以理解为松散的控制器,其中包含了视图的 UI 业务逻辑, 所有从视图发出的事件,都会通过代理给 Presenter 进行处理; 同时,Presenter 也通过视图暴露的接口与其进行通信...` - View负责界面展示和布局管理,向Presenter暴露视图更新和数据获取的接口 - Presenter负责接收来自View的事件,通过View提供的接口更新视图,并管理Model - Model...在ios中,MVVM编码可能会成这样 这个图解准确地描述了什么是 MVVM:一个 MVC 的增强版, 我们正式连接了视图和控制器,并将表示逻辑从 Controller 移出放到一个新的对象里, 即 View...参考文章: 设计框架(MVC、MVP、MVVM、VIPER)的演化说明总结 iOS VIPER架构实践(一):从MVC到MVVM到VIPER 深入分析MVC、MVP、MVVM、VIPER 浅谈开发中的

    4.3K21

    关于 MVVM和MVC的一些总结

    MVVM的视图模型是一个值转换器, 这意味着视图模型负责从模型中暴露(转换)数据对象,以便轻松管理和呈现对象。在这方面,视图模型比视图做得更多,并且处理大部分视图的显示逻辑。...MVVM以相同的方式抽象出视图的状态和行为, 但PM以不依赖于特定用户界面平台的方式抽象出视图(建立了视图模型)。MVVM和PM都来自MVC模式。...MVC到MVVM 的发展历程 二十世纪八十年代施乐帕克实验室提出了MVC的概念,MVC的全称即Model-View-Controller,是模型(model)一视图(view)一控制器(controller...虽然MVVM框架和之前的MVC、MVP模式的目的相同,即完成视图(View)和模型(Model)的分离,但它却有着明显的优势。...发布 - 订阅模式非常适合于 MVVM 双向绑定中多个视图绑定到同一个数据模型的情形。

    2.7K30

    MVI 架构

    Activity承担,同时因为XML视图功能太弱,所以Activity既要负责视图的显示又要加入控制逻辑,承担的功能过多。...小结一下,在我的使用中,MVVM架构主要有以下不足: 为保证对外暴露的LiveData是不可变的,需要添加不少模板代码并且容易遗忘 View层与ViewModel层的交互比较分散零乱,不成体系 MVI.../ MVI架构实战 / 总体架构图 图片 我们使用ViewModel来承载MVI的Model层,总体结构也与MVVM类似,主要区别在于Model与View层交互的部分: Model层承载UI状态,并暴露出...交互,通过Action通信,有利于View与ViewModel之间的进一步解耦,同时所有调用以Action的形式汇总到一处,也有利于对行为的集中分析和监控。...通过ViewModel暴露的方法交互,比较零乱难以维护 而MVI可以比较好的解决以上痛点,它主要有以下优势: 强调数据单向流动,很容易对状态变化进行跟踪和回溯 使用ViewState对State集中管理

    5410
    领券