【问题标题】:Is it okay to store properties in a Repository for reuse?可以将属性存储在存储库中以供重用吗?
【发布时间】:2020-06-05 10:01:49
【问题描述】:

我正在和一些朋友制作一个应用程序,我们决定采用 MVVM 模式。但是,他们对模式的理解与我不同。

我的问题是:如果我们想要在其他视图中重用数据,我们可以将它们作为属性存储在存储库中(因为存储库模式是单例)并从其他视图模型访问它们吗?

这是我的意思的一个通用示例:

object AnimalRepository {
       val favoriteBreed : Breed? = null
}

我们会像这样访问它:

class DogViewModel(
    application: Application
) : AndroidViewModel(application){

    val animalRepository = AnimalRepository 

fun setFavoriteBreed(favBreed: Breed) {
    animalRepository.favoriteBreed = favBreed
}

fun getFavoriteBreed() : Breed {
    return animalRepository.favoriteBreed
}

在这种情况下,为了简单起见,我没有使用 LiveData。

争论源于我们对 Android 应用架构指南这一部分的不同解释: https://developer.android.com/jetpack/docs/guide#truth

【问题讨论】:

    标签: android android-mvvm


    【解决方案1】:

    这就是我个人使用存储库的方式,也是使用存储库的方式。存储库是我们获取数据的地方。因此,任何视图或活动都可以轻松地直接从存储库访问数据,并且可以从任何视图模型中使用。这是回答您的问题还是您需要更多详细信息?

    【讨论】:

    • 感谢您的意见。您是否有一个带有这种方法的工作示例的公共回购?谢谢
    • 当然,我有一个使用这种模式的小项目。它在 GitLab 中。gitlab.com/mountblue/cohort-12-android/major-projects/… 不过请不要介意命名约定。
    • 谢谢,但我很确定它是私人的,它要求我进行身份验证
    • 你可以看看这个开源项目。github.com/MindorksOpenSource/…
    • 你一定误解了我的意思,因为这不是我所说的方法,因为在这个例子中,存储库中没有存储任何属性