如何使用具有 VIPER 架构的导航组件?

问题描述

我正在尝试从本教程中学习如何在 android 中使用 VIPER https://www.raywenderlich.com/5192-android-viper-tutorial 但在教程的最后它说很难实现路由器层,它是架构的核心层 .. 无论如何要实现 viper 和它的路由器层跨导航组件

解决方法

  • 路由器就是导航;导航是路由器。您不应该按照您提出问题的方式思考,因为“实现……路由器……跨导航组件”会误导您的想法。 https://TheSwiftDev.com/the-ultimate-viper-architecture-tutorial 简洁明了地建立了关于 VIPER 的良好思维,尽管如果它更加强烈地推动以下观点甚至可能会更好:VIPR 之间 100% 的消息传递和数据结构/实体和概念的中间层层必须是严格的应用程序域概念,与 Apple-think、Android-think 或 Microsoft-think 无关。所有 {Apple-frameworks-think,Android-think,Microsoft/UWP-think} 都必须隔离在每个 V I R 层中,绝不能出现在 P 和 E 层中。
  • 最好从 VIPER 和 MVVM-C 示例中学习导航。 MVVM-C的C和VIPER的R几乎一模一样;两者都负责导航。有多个使用 VIPER 或 MVVM-C 的示例/示例应用程序(以及少数开源的完整应用程序)。通过 Bing 或 Google 搜索它们。如果 MVVM-C 使用严格的应用程序域概念/数据结构/消息传递/实体在 VM 和 C 之间流动而在 VM 和 C 层之间没有污染,那么您也可以从 MVVM-C 的 C 中学习 VIPER 的 R来自 {Android-think,Apple-think,Microsoft-think}。即使在某些示例/示例 MVVM-C 应用程序中,VM 和 C 层之间的消息传递与 {Apple-think,Microsoft-think} 混淆,您仍然可以通过将操作环境污染中间层转换为严格应用程序域信息流中间层,但这几乎是通过插入 {RxKotlin、RxSwift、RxScala、ZIO+CatsEffect} 效果/以结果为中心的反应式来转换我的应用程序到反应式/Rx 技术信息流中间层,而不是一些以 {Android、Apple、Microsoft} 为中心的委托/回调机制。
  • 因为 VIPER 和 MVVM-C 以及 Clean 都需要一种纯粹的应用域间区域间消息传递方式,该方式在每个层/区域内隔离{Apple-think,Microsoft-think} (例如,保持 Apple-think/Android-think/Microsoft-think 表示 UI 的方式在 VIPER 的视图层内严格隔离;保持 Apple-think/Android-think/Microsoft-think 表示导航的方式严格隔离 VIPER 中的路由器层),设计团队经常选择使用事件驱动的功能编程式反应方式来表示在每个 VIPR 之间流动的严格应用程序域消息传递VIPER 中的层(其中 E 实体是表示层之间应用程序域概念的通用语言)。因此,您可以经常使用这样的响应式框架(例如,在 Apple 世界中的 RxSwift;在 Android 世界中的 Scala 思想流派中的 ZIO 或 Cats Effect 或 RxScala;在 Android 世界中的 Kotlin 思想流派中的 RxKotlin)作为该反应式框架的示例或示例应用程序的主要搜索词,然后从结果列表中精心挑选 VIPER 或 MVVM-C 的示例或示例应用程序,例如在 https://AwesomeOpenSource.com/projects/rxswift 中,其中说明指示哪些教 VIPER 的或 MVVM-C 的 R 或 C 技术,您会发现它们很有启发性。