美文网首页
swift开发架构模式VIPER

swift开发架构模式VIPER

作者: 斯瓦尔巴 | 来源:发表于2019-07-23 15:06 被阅读0次
1865432-580872920986b640.png

因为工作关系,最近接触新的开发框架VIPER。
如上图,VIPER的全称为View,Interactor,Presenter,Entity,Router的五个模块的缩写。

1.各部分的职责如下:

View

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

结合ios编程,我们可以理解为这是为ViewController,负责了视图的布局和显示。
重要的是发生事件要传送给Presenter,比如用户点击刷新按钮时,ViewController需要调用Presenter去获取新的数据。
如果Presenter需要更新视图时,要提供给Presenter更新的接口。比如,Presenter获取到数据后,要能从Presenter接受到数据,并刷新视图。

Presenter

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

Interactor

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

可以发现主要的业务逻辑放入到Interactor。这部分已经脱离了与view的接触,可以理解好处在于方便测试和维护。
而处理view与业务逻辑的联系,在于Presenter。相当于中间加入一部分缓冲,负责处理展示逻辑和业务逻辑的联系。
因为iOS还是以视图为中心的。

Router

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

Entity

-和Model一样的数据模型

这部分就比较简单,Router是跳转时的处理逻辑。Entity可以理解为model

2.VIPER可以帮我们做什么:

首先VIPER是单个界面的框架,不是一个APP的设计框架。

在这个基础可以帮我们解决ViewController的代码臃肿的问题。
比如以前我都会用extension来不断的扩充代码,现在可以考虑把代码转移到Interactor这些专门类来实现。

相关文章

网友评论

      本文标题:swift开发架构模式VIPER

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