基础架构MVC
关于MVC,斯坦福公开课那个白胡子老头的讲解已经很到位了。
MVC存在的问题:Controller过于臃肿,进而导致:
- View和Model耦合,耦合度高所以不利于复用;
- 不易测试;
- 不易维护,牵一发而动全身;
职责不明确:谁应该来负责网络请求?Model 还是 Controller ?
解决方案:
- 局部方案:分离协议,加入设计模式;
- 架构级方案:统一标准,使用MV(X)架构。
目前已知架构:MVVM、MVP、VIPER。
研究架构目的:使代码易复用、易拓展、易维护、易测试。
- MVVM据说门槛比较高,属于响应式编程,要结合RAC使用。
- MVP 解耦View和Model 面向协议编程。
- VIPER,什么鬼第一次听。
- 猿题库的MVC+VM架构。
以上均是MVC的变种架构,即在MVC的基础上再分离,再抽象,再封装。
MVP:MVP全称Model-View-Presenter,其中包含三个角色:Model、View和Presenter。
- Model:一般是对通过网络获取的JSON数据进行转换处理封装的数据模型类,或是对从数据库中取得的数据封装的数据模型类。(Presenter通过调用Model进行交互)
- View:View可以是ViewController或View。Presenter通过向View传Model数据进行交互。
- Presenter:作为Model和View的中间人,从Model中获取数据后传给View,使得View和Model没有耦合。
(很多时候之所以不懂根本原因是概念模糊不清,所以正确理解概念非常重要。但是看博客经常看到水文,很有可能看了导致走了弯路,所以要多看比较,分析出正确概念。另外,有时候理解一个概念需要时间,不是一步到位,而是不断修正的过程。)
MVP主要解决了View和Model之间耦合的问题。耦合即View聚合和Model。缺点是,代码会增加。
总结:MV(X)架构不过是在MVC的基础上再分层,分层的目的是:在代码复杂度可控(不要失去易读性,否则同事阅读代码时也很不方便)的情况下,尽可能的进行拆分,使得代码更具复用性、易测试和易拓展。拆分要控制好粒度,不要有太多胶水代码。
网友评论