MVC是什么:
ios开发,用的设计模式就是MVC模式, MVC分为3层结构,分别有各自不同的功能 Model层:主要控制数据部分 View层:是主要与用户进行交互的视图层 Controller层:是用来协调M层与V层之间的关系,调整显示数据的方式! 但在现在实际的工作当中,我发现他们之间并不是那么简单,想要真正的做到MVC结构,还有好多的细节。经过这段时间的项目经验,有点心得,现在就记录下来。 数据的来源、结构、关系 我们做项目,离不开界面和数据,但是还有一只隐形的手在控制这两个。那就是Controller。 在实际操作也就是编写代码的时候,先要弄明白 数据从哪来,一般他有两种途径:1网络解析 2从本地数据库或文件读取;在开发过程中,这两个数据有什么联系,这个需要根据需求为他们做关联,网络解析,那么一定是解析实时的数据,而本地数据大多是固定的数据,或者改动较少的数据,那么本地数据的数据是从哪来的,如果改动那么更新数据又从哪来? 在大多软件,界面显示的固定内容,如:账号、密码、登陆、背景图片、控件图片、软件启动声音文件等,这样的数据,由于他的稳定性所以一般存在于本地数据源,这样的数据我成为硬件数据;那么对应的应该有个软数据,软数据是什么呢,我把软数据理解为服务器上的信息,由于服务器数据量庞大,我们无法一次性把所有的数据一直到软件内部,即使可以,那么本地有了服务器所有的数据,他的运行速度,也会受到影响,退一万步说,即使不受影响,数据可以全部移植,那么他和服务器还有什么区别,也就失去了软件的含义。本地想要获取服务器数据,就要分批量解析,如果是用户常用的(解析数量较多的)就可以选择下载到本地的数据库中,这样做有两个好处:1在解析与本地数据库相同的数据时可以做判断,相同的数据直接从本地读取,加快运行速度,还有就是在没有网的情况下用户一样可以读取数据。 在分析完了数据源的问题,我们就可以对数据简历模型,界面的显示交互之间的逻辑需要设计,那么数据的传输及管理也需要我们设计。 个人把数据分为2种类型, 1文本形式 2多媒体格式(图像、声音、视频等)。注:我开发时间不长,经验尚浅,直接触到这几种。勿喷 文本格式 对于 数据单一,且类型同一的,我用表结构:plist,对于有一定层次划分但数据规整数据量不大的情况下,我用数据库(SQLite);如果是大量的数据用XML文件或者text文件去存储;至于多媒体文件,一般采用文件夹来储存(沙盒内创建相应的文件夹)。 知道了数据库的存储环境,那么我们该怎样管理数据呢? 下面我做了以下几点总结: 流程:每次先判断数据库是否有数据,如果有直接读取数据库,将数据库的值付给界面 为了方便管理,我见了以下几个类: 1 网络解析数据的类,功能:只负责调用网络解析的接口,从服务器端解析数据 2从本地读取数据的类,功能:负责调用读取文件、数据库,从本地取出相应的数据 3为了实现真正的分离定义一个共有类,功能:对以上两个类进行管理,并抽取数据添加到界面。 4对象类,功能:这个对象他有很多属性与数据库的各个键对应,在读取数据库时做一个映射。 具体的逻辑:(伪代码,暂且用数据库代替所有本地数据) Public Class.h -(Set)addDataToView; -(Set)addDataToView { read From DB //从数据库读取数据 if (DB==nil)//数据为空 { [web request]//请求数据 [add data to DB]//添加到数据库当中 read From DB //从数据库读取数据 function(DB.Value=Object.publicValue) //读取数据同时让其对模型对象的每一个属性做一个映射 view.data = Object.publicValue//数据添加到界面 } else if(DB)//数据库有数据 { read From DB //从数据库读取数据 function(DB.Value=Object.publicValue)//读取数据同时让其对模型对象的每一个属性做一个映射 view.data = Object.publicValue//数据添加到界面 } } 这样我每次只需要做一个操作调用 -(Set)addDataToView;方法,实际就是每次都从数据库取值。这样就可以做到数据、界面、控制分离。 |
MVC结构
最新推荐文章于 2022-04-15 22:02:55 发布