在应用程序开发中,我们经常使用到MVC框架模式,M-Model(即为模型),V-View(视图),C-Controller(控制器).
MVC模式的要求是将数据与视图隔离开.但是数据需要依赖视图进行呈现,视图也需要及时发现数据的变更,这
两者之间唯一的联系纽带就是控制器,由它来负责将数据交给视图去呈现,并且在数据发生变更及时告知视图.
模型负责处理数据,视图负责呈现数据,控制器则负责业务逻辑控制.
模型与视图是无关的,一个模型可以跟给多个视图绑定。
模型与数据格式也是无关的,一个模型可以使用多种格式的数据,如各种不同的数据库,配置文件等.
模型是对数据的抽象封装,不同的数据格式统一封装成一种通用的数据模型,视图和控制器完全可以不用
关心模型所使用的数据的原始格式.
举个例子:
一个iOS阅读器APP,在启动后的书架页面(UIView)上要显示已经导入的所有书的信息.这个页面的角色就是视图,
所有书的信息就是数据,假定我们把每本书的信息(封面图片,书名,阅读进度)都放在一个book.plist文件中存储.
这个plist文件就是数据.最直接的做法是在UIView中直接读取plist文件进行解析.但是这是不符合MVC的原则的,
我们应该把数据封装在一个模型中.做法是:先从plist将每本书的信息(一个字典)读出,将字典转成模型封装在
Book模型中,组成成一个数组,数组的每个元素都是一个Book实例,这样这个数组就保存着所有书的信息.加载
UIView时,由控制器(UIViewController)将此模型数组传递给UIView,UIView将模型数组里的内容显示出来即可.
UIView并不关心数组里的数据是从哪来的,Book模型也并不关心UIView怎样显示.控制器可以从plist文件,或者
从本地数据库,甚至从网络读取书本的信息,无论从哪读取的信息,都统一转成模型封装成数组传递给UIView就ok了。
这样就是一个标准的MVC模型.
阅读(1177) | 评论(0) | 转发(0) |