【问题标题】:How to understand the VIPER clean architecture?如何理解 VIPER 清洁架构?
【发布时间】:2020-01-03 22:02:18
【问题描述】:

我最近发现了VIPER clean architecture,并开始寻找在 Android 平台上应用此架构的示例教程。然而,我只发现了一些让我感到困惑的示例项目,这就是为什么我想通过一个简单的例子来了解 VIPER 的基本原理。我想知道是否有人可以分享一些关于上述内容的好教程。

【问题讨论】:

  • 其架构模式与其他模式一样,用于模块化和逻辑分离。
  • 感谢您的评论!我也遇到了这个链接。我在这里问这个问题是因为我想要一个关于在 Android 上实现模式的好教程 :)
  • 有一篇很长的关于安卓上VIPER基本原理的好文章。基本上讲一下从鲍勃叔叔的干净架构中提取的原则是如何首先在 iOS 上实现的,以及它是如何在 android 上实现的。 luboganev.github.io/blog/clean-architecture-pt1 由 5 个部分组成。希望能给大家提供VIPER的基本原理和教程。
  • 它基本上是带有路由的干净架构。
  • @GeorgiKoemdzhiev 我也读过这篇文章,它是如此的不成熟和不成熟,甚至在基本的干净架构实现方面都失败了。

标签: android architecture software-design viper-architecture


【解决方案1】:

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

在 Viper 架构中,每个块对应一个具有特定任务、输入和输出的对象。这与流水线中的工人非常相似:一旦工人完成了一个对象的工作,该对象就会传递给下一个工人,直到产品完成。

V(视图):视图负责 UI 更新并显示演示者告诉它的任何内容。

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

P(Presenter):Presenter 扮演中间人的角色,它从交互中获取数据并传递给 View。 (可能是数据或任何用户操作)

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

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

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

好处:

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

-它使源代码更简洁、更紧凑和可重用

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

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

-可以应用SOLID原则。

-减少合并冲突的数量。

-由于您的 UI 逻辑与业务逻辑分离,因此可以轻松编写自动化测试

参考:https://medium.com/@javedmultani16/viper-architecture-viper-64f6cd91e6ec

【讨论】:

  • 为什么需要路由器?
  • 它包含应用程序的导航逻辑。例如。下一个按钮操作显示第二个屏幕。 medium.com/@javedmultani16/…
  • 提供的链接状态为404
  • @Mr.JavedMultani 实体是否应该与 JSON 响应网络服务不直接相关?
猜你喜欢
  • 1970-01-01
  • 2020-12-12
  • 2023-03-05
  • 2018-02-27
  • 2014-06-22
  • 2021-06-17
  • 2021-02-12
  • 1970-01-01
  • 2019-04-17
相关资源
最近更新 更多