你所不知的MVVM——ios

作者: 处在水深火热的iOS_林龙 | 来源:发表于2017-03-31 11:41 被阅读346次

    每当产品经理不停的修改需求时及产品的功能越来越多时。不得不考虑到产品的框架问题。

    从步入开发的第一天起,“高内聚低耦合”这个名词一直缠绕在我们的脑袋中。但是作为新手小咖怎么会理解到这个的重要性呢。所以实践出真理。好了,废话不多说马上进入我们的主题。

    首先我们先讲讲前几年主推的MVC,在斯坦福大学的公开课上已经很明确的交代了逻辑图。

    斯坦福大学MVC模式

    Controller : 为Model 及 View 的管理平台

    Model       :存放着模型数据 

    view          :自定义view

    1.view 发生触发事件时告诉Controller 

    2.Controller接收后去处理传给Model去处理

    3.Model处理成功后通知Controller ,Controller去更新view

    这样的逻辑很清楚也很清晰。但是功能越来越多的情况下。很多处理逻辑到交给了Controller,(如UITableViewDataSoure,UITableViewDelegate....... )就在Controller中实现。时间久了。Controller就变得无比的臃肿。已经违背了“高内聚低耦合”这个名词。

    我们应该把 “高内聚低耦合”这个名词改为动词。


    这个时候就多出了一个MVVM.

    MVVM模式

    可以不难看出,其实在MVC中分离多一个viewModel。viewModel主要的工作把Controller的一些工作交给viewModel去处理。ViewController只是管理器,不应该把大部分逻辑放入ViewController去处理,viewModel的加入大大提高了可读性及逻辑性。

    viewModel做的事情无非分为 : 

     1.获取网络请求

    2.处理view的交互逻辑(如UITableViewDataSoure,UITableViewDelegate.......)


    现实总是那么残酷。

    MVVM解决的方式就是把 处理view的交互逻辑 从Controller放入viewModel 其实说到底就是换汤不换药。所以我针对MVVM模式,做了一个优化

    优化后的MVVM

    在一个控制器里有很多自定义view,他们的逻辑又是独立的。只是通过交互方式来改变彼此的显示方式及状态。所有逻辑都放入各自的viewModel去处理。当需要去修改其他view的时候则可以通过回调(block,protocol)的方式去修改。这时候就需要在Controller中去处理。

    很多技术文 中都把 Controller 当成view 。其实那不是事实上的MVVM,那是MCVM (model, Controller , viewModel).

    哈哈,这都是本人的理解,如果本文中有什么错误的地方希望大家反馈。

    本文禁止转载

    来自 处在水深火热的iOS_林龙

    相关文章

      网友评论

        本文标题:你所不知的MVVM——ios

        本文链接:https://www.haomeiwen.com/subject/xjbmottx.html