【问题标题】:Clean architecture for 2 fragments that are similar in function with MVVM?与 MVVM 功能相似的 2 个片段的清洁架构?
【发布时间】:2020-06-18 05:37:22
【问题描述】:

我正在 Kotlin 中开发一个具有用户配置文件的 android 应用程序,并且我正在尽最大努力使用 MVVM 编写尽可能干净的代码。在负责更新用户配置文件的部分工作时,我注意到模型(POJO)、视图模型和片段本身与负责注册用户的部分相似 90%。我的问题是我应该选择什么设计以及为什么:

  1. 将2个动作分开,尊重单一职责原则,但有大量重复代码
  2. 将它们合并为一个动作(一个视图模型、模型和片段),并在此处和此处添加一些额外的内容

或者还有其他方法吗?也许有接口?遗产?应该如何实现呢?

【问题讨论】:

    标签: android kotlin mvvm architecture single-responsibility-principle


    【解决方案1】:

    MVVM 具有三个用于干净方式编码的强大部分。视图 - 模型 - 视图模型

    1. 您的片段将是VIEW,用于显示个人资料并从用户处采取行动
    2. ViewModel 将用于计算或操作配置文件数据
    3. Model/Repo 用于从服务器/存储生成/获取配置文件数据

    片段 ViewModel Repo/Model

    【讨论】:

    • 我明白这一点,但我的问题是我是否应该重视单一责任原则而不是没有混乱和重复的代码
    • 在这里,虽然很少有额外的代码,但从长远来看它会让你受益。您将来对数据量有任何更改,那么这肯定会影响对片段引用的更新,导致单一原则高度直接涉及同一代码库。如果您需要更改一些逻辑,这些逻辑也会影响片段和配置文件数据,因为它位于同一个位置。要独立管理代码层,您必须忽略 MVVM 的额外代码。
    【解决方案2】:

    使用继承将公共代码保留在 basefragmet / viewmodel 中。所以你有:

    UserProfileUpdateFragment -> UserProfileFragment UserProfileRegisterFragment -> UserProfileFragment

    UserProfileUpdateVM -> UserProfileVM UserProfileRegisterVM -> UserProfileVM

    【讨论】:

      猜你喜欢
      • 2014-06-22
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      • 2022-07-30
      • 1970-01-01
      • 2017-02-22
      • 2021-06-17
      • 2021-02-12
      相关资源
      最近更新 更多