这是应用层架构系列的文章
简述 MVC, MVP, MVVM 和 VIPER 这篇是网上各种转载的总结,有不足的地方。
从MVC到viper 这篇的博主分析的很好
浅谈 MVC、MVP 和 MVVM 架构模式 这篇大佬的文章
1.MVC
mvc是最出名并且应用最广泛的架构模式。MVC的目的是为用户提供直接看到信息和操作信息的功能。
在不同语言中,MVC的定义不同(见引用的第三篇文章)MVP和MVVM等都是MVC的变种。
- MVC分为Model,View,Controller。
- View是展示的界面。
- Model是数据模型,有fatModel,和thinModel之分。(model是单纯的数据结构,还是需要处理逻辑)。
- Controller负责协调Model和View。
2 iOS的实际的MVC的情况:
iOS-MVCiOS的实际情况是:controller持有和管理View,controller和View耦合在一起。
我们使用iOS的MVC的时候,会造成controller繁重。原因是controller需要做的工作太多:
- controller持有和管理View的整个生命周期,处理view的创建,布局等。
- view的需要显示数据的组装。
- view逻辑响应和处理。
- 网络请求的发起和取消。
iOS的MVC在开发中存在的问题是:
- 最重要的是繁重的视图控制器(原因上边有说)
- 难以测试(因为视图操作和业务逻辑混在了controller中,难以测试)
- 缺少网络逻辑(放在model中不合适,因为网络是异步的,放在view中,很不合理,放在controller中,造成繁重的控制器视图)
-责任模糊(一段逻辑代码,不知道应该放在model,还是controller中)
3. 解决方式是:
使用别的应用层的架构MVP,MVVM,VIPER等。
网友评论