Objective-C MVC MVVM MVP
来源:互联网 发布:中国海关统计数据库 编辑:程序博客网 时间:2024/04/30 15:50
MVC
iOS框架Cocoa Touch设计者们采用MVC模式那么MVC代表什么?
MVC(Model-View-Controller,模型-视图-控制器)
Model模型:用来呈现数据
View视图:用来呈现用户界面
Controller控制器:用来调节模型与视图之间的交互
我们来看下面的图片,来自斯坦福大学的公开课
MVC 约定, Model 不允许与View 打交道。 Model 是管理数据的, 当Model中的数据发生变化时,与之对应的视图应更新。 这就需要一种机制来支持。为此 iOS 框架提供了两种支持机制: Notification 和KVO (Key-Value Observing)。 KVO 可简单理解为,为你所关注的 Key 对象注册一个监听器。 当有数据发生变化时,就会发出广播给所有的监听器。 MVC 也约定, View 不允许直接引用Modal, 它只能被Controller 所控制。 Controller 控制 View 显示什么数据。我们知道,View 所要显示的数据是来源于 Modal, View 上产生的事件 ( 比如 Touch事件)需要通知 Controller。 既然MVC 不允许直接打交道,就需要提供一种机制。
实践(更)
以下是搭建项目的目录结构
以上两种一种是通过页面,另一种是通过MVC来分,遵守设计思路都可以。好的设计是,方便,可维护,可扩展,低耦合。哪一种设计模式只要觉得好用就可。
MVVM
采用MVC模式开发,会导致Controller层会有大量的逻辑和视图控制代码,这样controller层比较臃肿也不易维护。所以在MVC的基础上我们引入了ViewModel,我们通过下面的图片了解
MVP
MVP 即 Modal View Presenter(模型 视图 协调器),MVP 的协调器 Presenter 并没有对 ViewController 的生命周期做任何改变,因此 View 可以很容易的被模拟出来。在 Presenter 中根本没有和布局有关的代码,但是它却负责更新 View 的数据和状态。MVC 和 MVP 的区别就是,在 MVP 中 M 和 V 没有直接通信。
MVP 是第一个如何协调整合三个实际上分离的层次的架构模式,既然我们不希望 View 涉及到 Model,那么在显示的 View Controller(其实就是 View)中处理这种协调的逻辑就是不正确的,因此我们需要在其他地方来做这些事情。
PS
今天粗略的介绍一下……
- Objective-C MVC MVVM MVP
- MVC->MVP->MVVM(未完)
- MVC,MVP,MVVM模式
- MVC MVP MVVM综合
- MVC,MVP,MVVM
- MVC MVP MVVM
- MVC、MVP 和 MVVM
- MVC MVP MVVM
- 前端MVC&MVP&MVVM
- mvc mvp mvvm
- MVC, MVP与MVVM
- MVC、MVP、MVVM
- MVC,MVP 和 MVVM
- MVC,MVP 和 MVVM
- MVC、MVP和MVVM
- MVC MVP MVVM
- MVC,MVP,MVVM
- MVC、MVP、MVVM
- 寂寞
- gdufe acm 1138 出题人这样不好吧
- MyBatis代码生成工具mybatis-generator在Myeclipse10中的使用
- iOS coretext框架第一章 基础知识
- 从今天开始,拼命把自己锻炼成一个软件人才,立此博以铭志
- Objective-C MVC MVVM MVP
- java工具,框架等的历史版本下载页面
- js中的正则表达式入门
- java NIO基础知识
- POJ3281 Dining
- matlab更改colorbar字体的大小,设置范围
- 团体程序设计天梯赛-练习集-L3-007. 天梯地图(最短路)
- github + jenkins 如何不使用验证达到触发的目的
- get_scan_count