美文网首页
swift开发架构模式VIPER

swift开发架构模式VIPER

作者: 斯瓦尔巴 | 来源:发表于2019-07-23 15:06 被阅读0次
    1865432-580872920986b640.png

    因为工作关系,最近接触新的开发框架VIPER。
    如上图,VIPER的全称为View,Interactor,Presenter,Entity,Router的五个模块的缩写。

    1.各部分的职责如下:

    View

    -提供完整的试图,负责试图的的组合,布局,更新
    -向Presenter提供更新视图的接口
    -将View相关的事件发送给Presenter

    结合ios编程,我们可以理解为这是为ViewController,负责了视图的布局和显示。
    重要的是发生事件要传送给Presenter,比如用户点击刷新按钮时,ViewController需要调用Presenter去获取新的数据。
    如果Presenter需要更新视图时,要提供给Presenter更新的接口。比如,Presenter获取到数据后,要能从Presenter接受到数据,并刷新视图。

    Presenter

    -接收并处理来自View的事件
    -向Interactor请求调用业务逻辑
    -向Interactor提供View中的数据
    -接收并处理来自Interactor的数据回调事件
    -通知View进行更新操作
    -通过Router跳转到其他View

    Interactor

    -维护主要的业务逻辑功能,向Presenter提供现有的业务用例
    -维护、获取、更新Entity
    -当有业务相关的事件发生时,处理事件,并通知Presenter

    可以发现主要的业务逻辑放入到Interactor。这部分已经脱离了与view的接触,可以理解好处在于方便测试和维护。
    而处理view与业务逻辑的联系,在于Presenter。相当于中间加入一部分缓冲,负责处理展示逻辑和业务逻辑的联系。
    因为iOS还是以视图为中心的。

    Router

    -提供View之间的跳转功能,减少了模块间的耦合
    -初始化VIPER的各个模块

    Entity

    -和Model一样的数据模型

    这部分就比较简单,Router是跳转时的处理逻辑。Entity可以理解为model

    2.VIPER可以帮我们做什么:

    首先VIPER是单个界面的框架,不是一个APP的设计框架。

    在这个基础可以帮我们解决ViewController的代码臃肿的问题。
    比如以前我都会用extension来不断的扩充代码,现在可以考虑把代码转移到Interactor这些专门类来实现。

    相关文章

      网友评论

          本文标题:swift开发架构模式VIPER

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