本文主要讲解最近学习的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部分中viewcontroller、interatcor和presenter是核心的部分,vip也正式这3部分的首字母得来。
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
4、为啥使用vip架构
使用vip架构数据的流向清晰,各部分只负责处理相应的内容,不会像mvc一样把所有的数据都耦合在controller里面,达到解耦的目的。与此同时,使用vip的架构也便于测试用例的编写。这是vip架构最大的好处,在下一章,将说一下在vip架构下unitTesting和UITesting的编写。下一章
学习资料:
https://clean-swift.com/clean-swift-ios-architecture/
https://www.kodeco.com/29416318-getting-started-with-the-vip-clean-architecture-pattern
网友评论