本篇参考:使用VIPER来构建iOS应用程序
1.viper介绍
VIPER是一个创建IOS应用层的架构。
View:视图,根据presenter的要求,显示界面。并将用户输入反馈给展示器。
interactor:交互器,包含由用例指定的业务逻辑。
presenter:展示器,为显示视图做的准备工作,对用户输入进行反馈。
Entity:实体,就是model。
Routing:路由。
2.viper解释:
1.交互器interactor
交互器在应用中代表着一个独立的用例,用例use case代表的是一个完整的,独立的,细分过后的业务流程。交互器可以操纵模型对象(实体)执行特定的任务,交互器中的工作应当独立与任何用户界面。
- 维护主要的业务逻辑,向presenter提供现有的业务用例
- 维护entity
- 当有业务相关事件发生,处理并通知presenter
-
实体entity
就是model类。 而且只能被交互器所操作。仅仅是model的数据结构。 -
展示器presenter
Presenter可以看做是上面一个个use case的使用者和响应者。将各个use case串联起来描述一个完整详细的业务流程,比如我们的登录模块,每次用户点击按钮注册的时候,会触发一系列的use case,从检验用户输入合法性,设备网络状态,服务器资源是否可用,到最后处理结果并展示。
- 接受并处理view的事件
- 向interactor请求调用业务逻辑。
- 向interactor 提供view中的输入数据。
- 接受interactor的数据回调事件。
- 通知view更新
- 通过router跳转其他view
4.视图view
视图一般是被动的,它通常等待展示器下发需要显示的内容,而不会向其索取数据。展示器通过内容进行表达,而不关心那些内容所显示的样子。内容如何被显示是由视图来进行控制的。
- 提供完整的视图,负责视图的组合,布局,更新。
- 向presenter提供更新视图的接口。
- 将view相关的事件发送给presenter。
5.路由 Routing
将页面跳转的路由功能单独拎出来。
3.和MVX的区别
viper把mvc中的controller拆分成了presenter,interactor,和router。
- 主要业务逻辑再interactor中,Interactor的设计里提出了"用例"的概念,也就是把每一个会出现的业务流程封装好,这样可测试性会大大提高。
- 而Router则进一步解决了不同模块之间的耦合。
- Presenter的主要工作是在View和Interactor之间传递事件,并管理一些View的展示逻辑。是业务流程的执行者。
优点是: 可测试性好, 隔离程度高, 分工明确。
缺点: 层与层之间需要设计接口。
网友评论