MVC介绍

这是应用层架构系列的文章

简述 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的情况:
MVC介绍_第1张图片
iOS-MVC

iOS的实际情况是: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等。

你可能感兴趣的:(MVC介绍)