网上流传 MVC苹果 MVVM MVP设计模式 以及最新更新出来的VIPER
先不讨论设计模式,先聊聊一些读后感
整个APP客户端 可分为
展示层(UI)
控制层(数据和UI之间的关系)
数据层(Model)
备注:model层 (不赞同网上仅仅针对一个实体对象的说法,我理解的数据层包含 网络请求、数据库处理、以及图片处理、字符高度计算等内容)
各个业务模块横向分层 ,model纵向分层
实际项目中,把model层分为业务层(businessLayer)、数据层(数据库,网络,文件写入)、组件层(各种工具类)
MVC设计:

controller 持有view与model,业务之间调用关系明确

MVVM 将View和ViewController作为一个整体,把ViewController中ViewModel的功能抽离出来,viewModel,不过VC仍然持有ViewModel ViewModel持有Model,增加代码的可测试性 注意ViewModel不持有 View, 取而代之的是双向绑定,但在实际应用中,双向绑定并不利于开发,暂时了解吧
参考链接:https://blog.csdn.net/dangbai01_/article/details/80534837
https://www.cnblogs.com/iammackong/articles/3312565.html
代码链家:https://github.com/canwhite/QCMVVMTest


MVVM变种 viewModel细化 为视图状态和 业务层的分离
关于MVC 平常项目中用的跟苹果的思想并不完全一致,viewController代替了model绝大多数的功能,所以后来出了MV(x)种种设计模式来解耦合,MVP,MVVM具体没有特别明白,反而更喜欢VIPER,其实说到底还是多model层的细化,对Model与View之间的 中间桥梁 进行明确的功能定义
参考链接
http://ios.jobbole.com/83727
https://zuikyo.github.io/2017/07/21/iOS%20VIPER%E6%9E%B6%E6%9E%84%E5%AE%9E%E8%B7%B5(%E4%B8%80)%EF%BC%9A%E4%BB%8EMVC%E5%88%B0MVVM%E5%88%B0VIPER/
https://blog.csdn.net/phpkernel/article/details/7332227
网友评论