IOS中的VIP(干净的Swift架构)

VIP还鼓励使用模板“促进”其实施。您可以在Clean Swift IOS体系结构上找到模板,以及有关VIP生命周期的更多详细信息。 使用这些模板,您无需担心项目中VIP架构的实现。 模板有助于轻松编写测试用例。

VIP单向方式

VIPER双向方法

在上图中,我们可以看到VIP架构采用的是单向方法,与VIPER有所不同,后者遵循的是双向方法。这两种架构均基于Single Responsibility Principle(单一责任原则),可带来整洁的架构和更好的可测试性。

如何在项目中使用VIP模板

首先从干净的Swift架构下载模板

将干净的swift文件夹复制到/ Users / / Library / Developer / Xcode / Templates / File \ Templates

启动Xcode并创建一个新文件(文件>新建>文件或⌘N)

搜索Clean Swift部分,然后在可用模板之间进行选择

这样,您就可以轻松地在项目中实施VIP架构。

同样,VIP模板具有用于单元测试实施的模板。 众所周知,VIP完全支持TDD(测试驱动开发)。您不必担心为项目编写单元测试类。

VIP演示项目

如果您对它在现实生活项目中的实施更加困惑,我在Github项目中VIP架构做了简单的演示。 关于项目中的实施以及单元测试的实施,以便您可以开始遵循项目中的TDD(测试驱动开发)。

VIP架构实施

VIP不仅由三部分组成,尽管其名称仅是VIP,但它不仅具有ViewControllers,Interactors和Presenters等更多的组件,例如数据模型,路由器和Workers,而且可以将Viewcontrollers划分为Configurator。变得庞大。

ViewController

在ViewController的viewDidLoad() ,我们需要运行一些业务逻辑,因此我们将其称为fetchPosts() 。 在fetchPosts() ,我们在输出(交互器)上调用fetchPosts(request) )。 而已。 我们要求输出执行我们的业务逻辑。 视图控制器不需要也不应该关心谁以及如何完成。但是,如果有必要,可以将ViewController划分为Configurator。

互动者

交互器包含您应用程序的业务逻辑。 用户在您的UI中点击并滑动即可与您的应用进行交互。 视图控制器从UI收集用户输入,并将其传递给交互器。 然后,它检索一些模型,并要求一些工人进行这项工作。

工人

帖子视图可能需要从Core Data中获取帖子,进行api请求并从api中获取帖子,允许用户喜欢发布和评论帖子,等等。 您不想通过执行所有这些任务而使交互器陷入困境。 相反,您可以将其分解为许多工人,每个工人都做一件事情。 然后,您可以在其他地方重用相同的工作程序。

模型

我们知道从api获取请求时,我们有请求参数和响应以及ViewModel来显示对View的响应。在这里,我已经从模型中删除了ViewModel,因为我受到eureka库的影响,该库使ViewModel与View保持一致,并且发现像这样容易工作但您可以在此处保留ViewModel。

  • 请求 -视图控制器构造一个请求模型,并将其传递给交互器。 请求模型主要包含用户输入,例如在文本字段中输入的文本和在选择器中选择的值。
  • 响应 -交互者完成请求工作后,将结果封装在响应模型中,然后将其传递给演示者。
  • 视图模型 -演示者收到交互者的响应后,将结果格式化为原始数据类型,例如String和Int,并将其填充到视图模型中。 然后,它将视图模型传递回视图控制器进行显示。

主持人

交互器产生一些结果后,它将响应传递给演示者。 演示者然后将响应编组到视图模型中

路由器

当用户点击下一个按钮导航到情节提要中的下一个场景时,将触发Segue,并显示一个新的视图控制器。 路由器从视图控制器中提取此导航逻辑。 这也是将任何数据传递到下一个场景的最佳位置。 结果,视图控制器只剩下控制视图的任务。

通过这种方式,您可以使用VIP架构,并且您知道只有使用健全的架构才能进行测试。 因此,请从现在开始开始TDD(测试驱动开发)。请分享并让更多的人知道此架构的重要性。