MVC,MVP,MVVM
MVC
MVC模式的意思是,软件可以分成三个部分
视图(View):用户界面。
控制器(Controller):业务逻辑
模型(Model):数据保存
实际项目往往采用更灵活的方式,以 Backbone.js 为例。
- 用户可以向 View 发送指令(DOM 事件),再由 View 直接要求 Model 改变状态。
- 用户也可以直接向 Controller 发送指令(改变 URL 触发 hashChange 事件),再由 Controller 发送给 View。
- Controller 非常薄,只起到路由的作用,而 View 非常厚,业务逻辑都部署在 View。所以,Backbone 索性取消了 Controller,只保留一个 Router(路由器) 。
MVP
- 各部分之间的通信,都是双向的。
- View 与 Model 不发生联系,都通过 Presenter 传递。
- View 非常薄,不部署任何业务逻辑,称为"被动视图"(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。
MVVM
MVVM 模式将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致。
唯一的区别是,它采用双向绑定(data-binding):View的变动,自动反映在 ViewModel,反之亦然。Angular 和 Ember 都采用这种模式。
iOS 应用
MVVM就是把之前Controller里面的代码逻辑全部移植到了ViewModel里面,相对于以前而言,控制器也被归属于View一类,那么他和View一样都会有自己的ViewModel去处理逻辑,而且ViewModel必然拥有Model,这样的关系使得控制器代码会减少很多很多,处理起来又多了一个类,本身设计模式里面有代理,通知,KVO等,不同业务对应不同的设计模式,个人理解为了减少控制器的代码,引进了新的类,那么类的交互就变得更麻烦了,因此RAC出现了,他帮我们直接管理了苹果的那一套数据处理设计模式,统一用它的”信号流”来进行
Reference
1.http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html
转载于:https://www.cnblogs.com/H7N9/p/8872009.html
MVC,MVP,MVVM相关推荐
- 表现层持续解耦带来的模式转变 MVC MVP MVVM
---微软WPF带来的团队变化和软件技术变化 Model-View-ViewModel是一种架构模式,主要在WPF.Silverlight和WP7开发里使用,它的目标是从视图层移除几乎所有代码隐藏( ...
- java mvc mvp mvvm_一篇文章了解架构模式:MVC/MVP/MVVM
架构模式的文章很多,好理解的没有几个.大部分文章出现的主要问题有: 没有设定好作用域:前端MVC是改造过的MVC,和后台MVC有明显的区别,不能一概而论 没有实际的例子:实际的例子对应日常的工作,没有 ...
- Android中常见的MVC/MVP/MVVM模式
Android中常见的MVC/MVP/MVVM模式 经典MVC 在1979年,经典MVC模式被提出. 在当时,人们一直试图将纯粹描述思维中的对象与跟计算机环境打交道的代码隔离开来,而Trygve Re ...
- Android 系统(77)---MVC,MVP,MVVM的区别
MVC,MVP,MVVM的区别 一.MVC 软件可以分为三部分 1.Model:模型层,负责处理数据的加载或者存储 2. View:视图层,负责界面数据的展示,与用户进行交互 3.Controll ...
- Android App的设计架构:MVC,MVP,MVVM与架构经验谈
本文转载自https://www.tianmaying.com/tutorial/AndroidMVC,原文作者周鸿博. 和MVC框架模式一样,Model模型处理数据代码不变在Android的App开 ...
- iOS-【转载】架构模式 - 简述 MVC, MVP, MVVM 和 VIPER
看了很多篇关于 iOS 架构模式的,尤其是关于 MVVM 的,都是似懂非懂,无意看见了这篇,发现总结的很到位,很用心,特转载至此,如果英语好,请看原文 iOS Architecture Pattern ...
- iOS-【转载】架构模式 - 简述 MVC, MVP, MVVM 和 VIPER (译)
看了很多篇关于 iOS 架构模式的,尤其是关于 MVVM 的,都是似懂非懂,无意看见了这篇,发现总结的很到位,很用心,特转载至此,如果英语好,请看原文 iOS Architecture Pattern ...
- iOS 架构模式 - 简述 MVC, MVP, MVVM
Make everything as simple as possible, but not simpler - Albert Einstein,把每件事,做简单到极致,但又不过于简单 - 阿尔伯特· ...
- iOS 架构模式 - 简述 MVC, MVP, MVVM 和 VIPER (译)
在使用 iOS 的 MVC 时候感觉怪怪的?想要尝试下 MVVM?之前听说过 VIPER,但是又纠结是不是值得去学? 继续阅读,你就会知道上面问题的答案 - 如果读完了还是不知道的话,欢迎留言评论. ...
- [iOS][转]iOS 架构模式 - 简述 MVC, MVP, MVVM 和 VIPER (译)
转自: https://segmentfault.com/a/1190000004680605?ref=myread Make everything as simple as possible, bu ...
最新文章
- python并发与并行_python多进程,多线程分别是并行还是并发
- windows安装xampp时出现,unable to realloc xxxxxxxx bytes
- Windos 10 下,应用版ubuntu系统, 访问windos文件系统
- 【Python】Python入门-列表初相识
- 使用java代码判断一个字符串里是否包含中文字符
- 如何使用 React 和 React Hooks 创建一个天气应用
- LeetCode 116. 填充每个节点的下一个右侧节点指针(递归循环)
- Java并发编程实战~原子类
- cocos2dx3.2文件结构和代码结构
- 工具资源系列之 github 上各式各样的小徽章从何而来?
- 炉石整活拔线方法_酒馆战棋:整活如何简单“拔线”?瓦娘在线教学,却3本得死神?...
- MySQL误删数据救命指南:必收藏
- 计算机网络知识点整理
- tp 数据库查询排序_ThinkPHP对查询的数据随机排序
- 数据管理与数据库 大学课程_根据数据显示的50种最佳免费在线大学课程
- 光纤交换机使用方法及应用方案详解
- 产品经理为什么比程序员工资要高?百度员工:因为他是产品灵魂
- 2021年第4季度记账理财应用监测,头部集聚加强,领跑者转型发展
- CSS中几种解决高度坍塌方式分析
- 时间序列预测--基于CNN的股价预测
热门文章
- 1.10 编程基础之简单排序_10 单词排序
- RTX5 | 线程管理05 - 线程挂起osThreadSuspend与线程恢复osThreadResume
- 【ES11(2020)】Dynamic Import 动态引入
- 【分享-EasyRecovery】删除的文件找不回?不存在的!
- 阿里云 mysql 双主_mysql数据库一主两从
- JS逆向笔记-记录某测试论坛的js逆向练习
- Linux笔记-centos中大量tcp状态为TIME_WAIT
- HTTP之content-type相关
- C++ STL string的输出
- 数据结构-排序基础代码