从字面意思来理解,VIPER 即 View Interactor Presenter Entity Router(展示器(视图) 交互器 协调器 实体(数据) 路由器),迄今为止,划分责任的粒度是很好的选择。VIPER 在责任划分层面进行 了迭代,VIPER 分为五个层次:
展示器 -- 包含 UI 层面的业务逻辑以及在交互器层面的方法调用。
交互器 -- 包括关于数据和网络请求的业务逻辑,例如创建一个实体(数据),或者从服务器中获取一些数据。为了实现这些功能,需要使用服务、管理器,但是他们并不被认为是 VIPER 架构内的模块,而是外部依赖。
实体 -- 普通的数据对象,不属于数据访问层次,因为数据访问属于交互器的职责。
路由器 -- 用来连接 VIPER 的各个模块。
1)VIPER 模式下的三个特性的分析:
任务均摊 -- 毫无疑问,VIPER 是任务划分中的佼佼者。
可测试性 -- 不出意外地,更好的分布性就有更好的可测试性。
易用性 -- 必须为很小功能的类写出大量的口。
2)iOS VIPER 示意图:
基本上,VIPER 模块可以是一个屏幕或者用户使用应用的整个过程。VIPER 是第一个通过路由器实现明确的地址导航模式。
当我们把 VIPER 和 MV(X) 系列作比较时,我们会在任务均摊性方面发现一些不同: Model 逻辑通过把实体作为最小的数据结构转换到交互器中。Controller/Presenter/ViewModel 的 UI 展示方面的职责移到了 Presenter 中,但是并没有数据转换相关的操作。