如何理解VIPER清洁架构?

20

我最近发现了VIPER清晰架构,并开始寻找在Android平台上应用此架构的示例教程。然而,我只找到了一些样例项目,对我来说有点困惑,因此我想遵循一个简单的例子来了解VIPER的基本原理。我想知道是否有人可以分享一些关于这方面的好教程。


1
它的架构模式与其他模式相似,是为了实现模块化和逻辑分离。 - Maheshwar Ligade
谢谢您的评论!我也看到了这个链接。我在这里提问是因为我想要一个关于在Android上实现该模式的好教程 :) - Georgi Koemdzhiev
1
有一篇关于VIPER在安卓上的基本原则的长篇好文章。基本上讲述了如何从Uncle Bob的clean architecture中提取原则,首先在iOS上实现,然后在安卓上实现。http://luboganev.github.io/blog/clean-architecture-pt1/共分为5个部分。希望它能为您提供VIPER的基本原则和教程。 - Kharda
1
这基本上是带路由的干净架构。 - M. Reza Nasirloo
1
@GeorgiKoemdzhiev 我也读了这篇文章,它非常实验性和不成熟,甚至在基本的清晰架构实现上都失败了。 - M. Reza Nasirloo
显示剩余2条评论
1个回答

15

开发人员基本上根据需求使用MVC、MVP或MVVM架构进行开发。选择哪种架构来开发应用程序很重要,许多因素会影响软件架构的选择,如系统设计、需求、时间表等。

Viper架构中,每个块都对应着一个具有特定任务、输入和输出的对象。它非常类似于流水线上的工人:一旦工人完成了对一个对象的工作,对象就被传递给下一个工人,直到产品完成。

V(视图):视图负责更新UI并显示展示器告诉它的内容。

I(交互器):交互器负责从模型层获取数据,其实现完全独立于用户界面。所有业务逻辑都写在交互器中。例如,在交互器中编写获取用户数据API调用。

P(展示器):展示器充当中间人的角色,它从交互中获取数据并传递给视图(可以是数据或任何用户操作)。

E(实体):基本上它包含交互器使用的对象模型。例如,学生、朋友、大学等。

R(路由器):它包含应用程序的导航逻辑。例如,下一步按钮操作显示第二个屏幕。

此外,我使用了PROTOCOL,该协议包含了特定模块应用的所有规则和工作流程。在iOS中,每个模块的协议都写在单独的协议Swift文件中。

好处:

-所有模块都是独立的,因此VIPER非常适合大团队。

-它使源代码更加清晰、紧凑和可重用。

-它更容易采用TDD(测试驱动开发)。

-您可以轻松地向现有应用程序添加新功能,而无需可能改变其他模块。

-它可以应用SOLID原则。

-减少合并冲突的数量。

-由于UI逻辑与业务逻辑分离,因此编写自动化测试变得容易。 enter image description here

参考资料:https://javedmultani16.medium.com/viper-architecture-viper-d740d98b7529


为什么我们需要路由器? - IgorGanapolsky
它包含应用程序的导航逻辑。例如,下一步按钮操作显示第二个屏幕。https://medium.com/@javedmultani16/viper-architecture-viper-64f6cd91e6ec - Mr.Javed Multani
提供的链接状态为404。 - Mia
@Mr.JavedMultani 实体是否不应直接与JSON响应网络服务相关联? - piotr_ch
https://medium.com/omisoft/https-medium-com-omisoft-viper-in-android-the-practical-guide-or-how-to-catch-a-snake-78cc17e96d63 - Mohamed Slama
https://javedmultani16.medium.com/viper-architecture-viper-d740d98b7529 - Mr.Javed Multani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接