MVC设计模式的逻辑层解刨
2016-03-26 00:15
246 查看
什么叫MVC设计模式
MVC=Model(模型)+View(视图)+Controller(逻辑控制)
MVC的主要目的是实现V跟M之间的分离,他们是不够之间通信,要通过C过度。(实际上要记住 V跟M是可以通讯的 不过你最好别那么做 因为它违背了MVC设计思想 这才是重点好吗)
分解如下
Model:
数据模型保存应用程序的数据
View:
视图是模型的可视化表示以及用户交互的控件;基本上来说,所有的UIView对象以及它的子类都属于视图
Controller:
控制器的作用就是把模型跟视图关联到一起,起到桥梁作用。它访问模型中的数据并在视图中展示它们,同时它们还监听事件(比如用户的点击事件)和根据需要操作数据。
MVC消息发送机制
附上一张手绘的MVC逻辑图(不要吐槽哈哈)
名词解释:
一: View到Controlle的传值
1 action–>target 普通的事件响应 比如在View层按了一个Button,这个button会通过定义在controller的target响应
2.delegate 比如我在View上滑动图片 这时候就需要用到代理来处理这个事件到Controller
3.比如一个现实网页视图的View 要显示多小条的数据 那么就要通过data source 来告诉Controller请求多条数据(当然最近的数据还是在model层 Controller是一中介)
4.以上3条都是View响应点击事件 这才是重点
二:Model到Controller的传值
1.通知:model一般保存的是网络数据 如果网络数据发送改变 这时候 model 就是广播一个通知 controller收到通知就改变最后重现到视图层
2.KVC 这个跟通知的实现逻辑差不多 就不累赘
三:Controller到View
1.outlet属性:outlet是一个关联视图层的输出接口属性 这不用多说了把
MVC设计模式的优点
一:mvc设计模式可以提高代码的重用性
二:降低耦合度(关联性) 视图层跟数据模型分开,这样就可修改视图层代码,而不用改动数据模型和控制器的代码*业务流程只需改变数据模型代码(比如请求数据的方式变动)也不要改动视图跟控制器的代码*
MVC=Model(模型)+View(视图)+Controller(逻辑控制)
MVC的主要目的是实现V跟M之间的分离,他们是不够之间通信,要通过C过度。(实际上要记住 V跟M是可以通讯的 不过你最好别那么做 因为它违背了MVC设计思想 这才是重点好吗)
分解如下
Model:
数据模型保存应用程序的数据
View:
视图是模型的可视化表示以及用户交互的控件;基本上来说,所有的UIView对象以及它的子类都属于视图
Controller:
控制器的作用就是把模型跟视图关联到一起,起到桥梁作用。它访问模型中的数据并在视图中展示它们,同时它们还监听事件(比如用户的点击事件)和根据需要操作数据。
MVC消息发送机制
附上一张手绘的MVC逻辑图(不要吐槽哈哈)
名词解释:
一: View到Controlle的传值
1 action–>target 普通的事件响应 比如在View层按了一个Button,这个button会通过定义在controller的target响应
2.delegate 比如我在View上滑动图片 这时候就需要用到代理来处理这个事件到Controller
3.比如一个现实网页视图的View 要显示多小条的数据 那么就要通过data source 来告诉Controller请求多条数据(当然最近的数据还是在model层 Controller是一中介)
4.以上3条都是View响应点击事件 这才是重点
二:Model到Controller的传值
1.通知:model一般保存的是网络数据 如果网络数据发送改变 这时候 model 就是广播一个通知 controller收到通知就改变最后重现到视图层
2.KVC 这个跟通知的实现逻辑差不多 就不累赘
三:Controller到View
1.outlet属性:outlet是一个关联视图层的输出接口属性 这不用多说了把
MVC设计模式的优点
一:mvc设计模式可以提高代码的重用性
二:降低耦合度(关联性) 视图层跟数据模型分开,这样就可修改视图层代码,而不用改动数据模型和控制器的代码*业务流程只需改变数据模型代码(比如请求数据的方式变动)也不要改动视图跟控制器的代码*
相关文章推荐
- 客户端缓存和服务器缓存处理
- 践行社会主义核心价值观
- 《亥时夜游湖滨道中》
- poj 1753 枚举
- 单元测试和代码覆盖率工具的使用
- const在C与C++中的区别
- POJ 1006 Biorhythms
- Android中的Selector的用法 .
- 原来如此~
- ios9新特性学习方法和运行时(RunTime)解析
- HDU 5366 The mook jong
- jquery 自定义事件绑定与触发 $.one与$.bind效果对比实例
- 第一篇:个人感悟----懒惰是人类最大的敌人
- 异常信息定位具体数据行
- JVM(二)--Java代码编译和执行的过程
- 关于iOS中类似于Android的Toast短暂提示框
- laravel5 的中间件的使用 (1)
- Mysql 如何设置字段自动获取当前时间
- cf#ECR10-D. Nested Segments-树状数组+二分
- 《大风圈内》