| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> MVVM---再学习 -> 正文阅读 |
|
[开发工具]MVVM---再学习 |
传统的MVC模式在MVC下,所有对象都被归类为模型、视图和控制器。 视图通知控制器任何用户交互。 Model模型对象通常非常非常简单。通常,它们是Core Data托管对象。 View视图(通常)是 UIKit 组件或程序员定义的 UIKit 组件集合。 Controller控制器是应用程序的==“粘合代码”==所在的地方:
因此,我们看到MVC是有很多缺点的,归纳起来大致有: MVC的缺点
1. 控制器臃肿这个就很明显了,大量逻辑代码都放在控制器上,导致控制器臃肿 2. 缺少网络逻辑如果将其放入模型对象中,因为网络调用应该异步完成,因此如果网络请求比拥有它的模型寿命更长,那么它就会变得复杂。 视图中?🚫? 控制器,这也是一个坏主意,因为它会导致我们的 Massive View Controller 问题(第一个缺点)。 3. 可测试性差4. 管理的模糊定义视图控制器管理视图层次结构,视图控制器有一个“视图”属性,可以通过 IBOutlets 访问该视图的任何子视图。 那个点在哪里?什么时候分解事情变得有益?验证用户输入的业务逻辑属于控制器还是模型? 基于MVC存在的缺点,MVVM是否可以解决呢? MVVM
视图仍然没有对模型的引用,但控制器也没有。相反,它们引用视图模型。 View Model是放置用户输入验证逻辑、视图表示逻辑、网络请求启动和其他杂项代码的绝佳位置。 View Model绝对不要包含View
对于MVVM,需要一些绑定机制,这样 View Model 就能在背后的 Model 改变时更新自身的属性。 ViewModel持有Model 针对MVC的四个大的缺点,MVVM的解决途径:
使用 MVVM 的结果,是代码总量略有增加,但代码复杂度整体下降。 使用 ReactiveCocoa 是将所有移动部件粘合在一起的好方法。 参考资料: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 17:42:02- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |