VIPER架构简介
下面的文章提供了一个VIPER架构的概要。用来解决任何特定问题或情况的通用模板是基于软件设计模式的。这些架构模式对整个代码有巨大的影响,它是完全通用的。VIPER是iOS设计模式和可靠的基础设施之一。该方法对设计代码意义重大,但它有一些内置的逻辑,合并后形成一个逻辑方法输入到架构中。VIPER被用于开发许多巨大的项目和许多应用程序。
VIPER架构示意图
在构建iOS应用程序时,测试并不是那么重要的部分。但人们发现,在应用程序中进行测试是很困难的。因此,VIPER的开发是为了增加测试软件的方法,以更好的方式在应用程序的架构。VIPER在所有的移动和软件组件中为iOS应用程序提供了定义的架构。VIPER被扩展为视图、交互器、呈现器、实体和路由。VIPER的这种定义的架构将一个应用程序的逻辑结构隔离成不同的层,并赋予其各自的责任。
因此,它使应用程序和流程在每一层之间的边界上划分出依赖关系和跟踪通信。VIPER的不同层通过提供准确的位置和应用程序的逻辑和相关代码来支持导航。有了VIPER的应用,例子中的视图控制器变得简单、精干,并能显示控制机器。该代码易于测试和理解;它用于定期维护。VIPER的体系结构依赖于单一责任原则,该原则被作为一个定理来构建一个干净的体系。
VIPER架构的组成部分
下面给出了VIPER架构的重要和核心元素。
- 视图是一个坚持UIKit文件的接口部分,它在UIVIEW控制器和所有其他时间表的子类中。组件View不执行任何与业务逻辑相关的事情。它是一个转发部分和演示层,由演示者实现。因为视图是用来管理基于MVVM原则的控制器或数据管理员,以更简洁地增强项目和应用程序。
- 交互者是一个负责任的组件,用于从模型层撤销数据,其实现过程不依赖于用户界面。重要的是,数据库、网络和传感器上的所有数据执行者都不属于VIPER部分,而是作为单独的组件来处理,这些组件是从外部组件接收到VIPER模块的服务,它们可以作为交互者的补充插入。交互者可以制定从服务层收到的数据。它可以用来在任何传入的网络服务之前对数据进行过滤或排序,以保存数据。工具交互者对数据的准备和演示者的责任没有概念。
- 主持人是VIPER模块的一个核心类。在这里,独立于UIKit的类以适当的格式制定数据,这是视图和来自视图的UI事件的决定所需要的。它被提及为一个事件管理器。它与交互器进行交互,并要求路由器为路由的目的构建线。演示者的重要作用是与所有的类的组件交互并完成任务。它没有对UIKit或最低级别的数据模型的控制。然而,它是应用程序的一个关键部分,所有的业务逻辑都在这里实现。
- 实体被定义为普通的模型类,由交互者执行。所以,例如,VIPER模块的外部是一个实体,是服务层,因为它分布在整个系统中。但它并没有把模块分开,它不能在一个地方生成。相反,它类似于核心数据模型可以生成的swagger概念。
- 路由器是一个用于导航逻辑的组件,在UIKit类中使用。如果用户在两个应用程序上使用相同的iPad和iPhone视图,这将改变路由器的结构。它使用户能够在不干扰路由器的情况下维护一切。它引导来自演示器的导航流,并显示适当的屏幕是需要的。如果需要选择任何外部链接,那么就会唤起URL来调用路由器的内部。它是路由动作的一部分,类似的逻辑在社交媒体上实现,以分享UIactivityviewcontroller的功能。如果用户需要在VIPER模块之间共享数据,那么在路由器中执行是合适的。所以它一般是在一个委托的模式之间进行交流。因此,委托功能是在路由器中实现的。
- 构建器是用来通过注入外部服务的依赖关系来开发整个模块的。因为很少有管理员为建设目的而实施路由器。因此,一个相关的模块被开发出来,以建立和模拟另一个特定模块的版本。此外,生成器支持单元测试,这有助于提高流程和应用程序的生产力。
优点
以下是VIPER架构的优点。
- 尽管VIPER因其复杂性而受到批评,但它有许多其他可标记的好处。因此,在实施VIPER来设计我们的软件工具时有很多好处。
- 它为高维度的团队和复杂的项目提供了简单性。
- VIPER的可扩展性是线性的,并且可以持续工作,以执行许多并行操作。
- VIPER的代码是可重用的,并根据其职责解耦到许多组件。
- VIPER的清晰性和一致性被用于模块的分离。
- VIPER提供了简单的错误修复、可测试性和源代码控制。因为小块的代码,调试很容易,也更快。模块的构建具有良好的接口描述范围。简单的源码控制与纯粹的代码有较少的冲突,用于追踪问题和bug的位置。
推荐文章
这是一本关于VIPER架构的指南。在这里,我们分别讨论了Viper架构的图示、组件和优点。
The postVIPER Architectureappeared first onEDUCBA.