iOS架构设计-项目实战

有时候会听人说,每个项目的架构设计都不一样,但我想说 相似的项目 架构是可以相似的,

今天我只想说说我自己开发中,整个项目的设计。仅供大家参考,如果说的有不足的 ,也请大家提出,共同进步。

现在的架构设计一般是 MVC,MVP,MVVM,VIPER,虽然知道 他们是什么,但是在实际项目里 不能完全按照这些比葫芦画瓢,有些配置呀,网络请求呀,不同项目之间的通用类还是没有说明。

demo


demo.png
一 ,不用设计

刚开始做项目的时候,连model 都不会用,数据操作 全部 用NSdictionary ,导致 里面很乱,改个数据也特别的麻烦,找数据 还要拨开 好几层;
而且 逻辑,网络请求 都没有封装 全部放在viewController 里。不同viewController 下相似的逻辑,代码全是重复的。导致ViewContrller 里很乱 很杂,找问题的时候 也不容易定位,哈哈,不知道大家有过类似的情况没!


image.png

二,MVC

慢慢的学会了用MVC,以为整个项目的Model 都要放到Model 文件夹下,项目所有的Controller 都要放到Controller 文件夹下,项目所有的View 都放到View 文件夹下,当项目小的时候还可以。项目大了的话,Controller ,Model ,View 会越来越大,找某个Controller 对应的View 的时候 也特别难,特别是以前开发的人员离职了,或者是自己很久以前写的代码的时候,就更难了。

image.png

三, MVVM + 三层架构

慢慢的又学了 MVVM,三层架构(界面层、业务逻辑层、数据访问层)。因为实际项目中都是比较大的,所以我分模块划分,如 Home 模块 又分为 Controller,View,Model,Logic(逻辑层),API(网络请求层)。
Logic(业务逻辑层):其目的就是为了给Controller 减负。把一些逻辑稍微复杂,或者可以共用的逻辑,放在此处。比如购物车商品中 实际价钱的计算。单独封装 会逻辑更清晰。
API(网络请求层):大家众所周知 项目中的网络请求是很多的,一般你们都放到哪里呢? Controller ? ,ViewModel ? Model 层? 我习惯单独建个文件去进行网络请求,因为 网络请求后 还会做处理,比如 网络请求的都是json, 要把对应的json 转成 我们所需要的Model 。

image.png

四,我的最终版 ( MVVM + 三层架构 + 其他 )

Global:但是 项目中 还有一些其他的东西,比如用户登录后,要记录用户的信息,而且 很多地方都要用到这个用户信息,那怎么办呢?他不属于任何一个module ,那就放到最外层。
Util:一些通用的工具类


image.png
image.png

五. 项目数据传递流程

项目结构.png

当然 Cocoapods 是必不可少的,这个我就不再赘述。

有不同的见解请留言。

有感触的好贴:https://www.jianshu.com/p/15e5b83ab70e

demo.png

你可能感兴趣的:(iOS架构设计-项目实战)