Viper架构初探(一):架构实践与职责架势

Viper架构实践

基于Viperit写了一个简单的新闻的demo
XCViperitDemo

Xnip2019-10-17_15-08-55.jpg

Viper架构图

image
1865432-580872920986b640.png

VIPER的主要部分

简介

  • View: (视图): 显示Presenter告知的内容,并将用户输入中继回Presenter。
  • Interactor: (交互器):包含用例指定的业务逻辑。
  • Presenter: (表示层,也可称主持人):包含用于准备显示内容(如从Interactor接收的)和用于对用户输入做出反应(通过从Interactor请求新数据)的视图逻辑。
  • Entity: (实体):包含Interactor使用的基本模型对象。
  • Routing: (路由):包含用于描述按哪个顺序显示哪些屏幕的导航逻辑。

这种分离也符合单一责任原则
Interactor负责业务分析师
Presenter代表交互设计师
View负责视觉设计师

相比MVX

相比之前的MVX架构,VIPER多出了两个东西:Interactor(交互器)和Router(路由)。

各部分职责如下:

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

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

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

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

- Entity
和Model一样的数据模型

Viper模版代码生成工具

推荐两个模版

Viperit

  • 支持Swift、SwiftUI
  • 可创建viper架构模版

Generamba

  • 支持OC和Swift
  • 可以创建mvvm、viper模版

了解模版语言Liquid

github源码:liquid
Liquid 模板语言中文文档

Liquid 是一门开源的模板语言,由 Shopify 创造并用 Ruby 实现。它是 Shopify 主题的骨骼,并且被用于加载店铺系统的动态内容。

从 2006 年起,Liquid 就被 Shopify 所使用,现在更是被大量 web 应用所使用

参考:

  1. viper原作者 By Jeff Gilbert and Conrad Stoll
    Architecting iOS Apps with VIPER
  2. iOS VIPER架构实践(二):VIPER详解与实现
  3. iOS架构模式-VIPER

推荐阅读更多精彩内容