美文网首页
Swift中的VIP架构及测试 (一)

Swift中的VIP架构及测试 (一)

作者: 三国韩信 | 来源:发表于2022-12-01 12:31 被阅读0次

    本文主要讲解最近学习的VIP架构的一些理解以及简单的测试。本文讲分成3个部分;第一部分是what is vip;第二部分是how to testing;第三部分:how to create xcframework;

    what is vip architecture

    1、组成元素

    vip架构一般由6个部分组成,包括:viewController(这一块可以是controller和各种view)、interactor、presenter、router、worker、model。而在这6部分中viewcontrollerinteratcorpresenter是核心的部分,vip也正式这3部分的首字母得来。

    vip图片.png
    2、各部分作用

    1、viewController:这部分就是页面的controller和对应的各种子view,controller负责发送request给interactor,和接受presneter返回的数据,展示页面。controller本身不做任何的业务内容。
    2、interactor:它接受controller发过来的request,然后找各个worker去处理具体的内容,比如找网络请求的worker去请求数据、找存储的worker去获取本地数据库的数据等等,然后持有对应的数据源。interactor还负责把对应数据源的数据发送给presenter。
    3、presenter:它接受interaction发送过来的数据源,然后进行必要的转换,保留controller需要的数据及格式,发送给controller显示。
    4、model:负责VIP3个核心部件之间数据转换的对象,model包括了controller发给interactor的request、interactor通过worker拿到的数据源response、presneter转换数据后返回给controller的viewModel。
    5、worker:具体负责处理及获取数据的最小单元。比如获取网络请求、获取数据库数据等等。
    6、router:负责页面跳转及传值的路由。

    3、数据流向及各部分关系

    vip架构中,数据从一开始的controller流向interactor到presenter,再回到controller。中间由interactor负责获取数据源,presenter负责格式化数据。这一过程形成了一个单向的数据流圆环。当然在这个数据圆环中,controller对interactor是强持有,interactor对presenter也是强持有,presenter对controller是弱引用;controller对router也是强引用,router对controller是弱引用。如下图(实线是强引用,虚线是弱引用)。从图中也可以看出router负责页面跳转,它需要目标controller和数据源,所以它同时拥有了controller和interactor

    vip各部分关系.jpeg
    4、为啥使用vip架构

    使用vip架构数据的流向清晰,各部分只负责处理相应的内容,不会像mvc一样把所有的数据都耦合在controller里面,达到解耦的目的。与此同时,使用vip的架构也便于测试用例的编写。这是vip架构最大的好处,在下一章,将说一下在vip架构下unitTesting和UITesting的编写。下一章

    我也写了一个小demo

    学习资料:

    https://clean-swift.com/clean-swift-ios-architecture/
    https://www.kodeco.com/29416318-getting-started-with-the-vip-clean-architecture-pattern

    相关文章

      网友评论

          本文标题:Swift中的VIP架构及测试 (一)

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