[带实时数据的Android MVVM干净架构

问题描述 投票:0回答:1

我有一个架构问题。目前,我的应用非常简单,用户登录并获得餐厅列表即可注销。我将kotlin协程用于异步部分,mvvm实时数据和koin DI。

这是用户单击登录名时的登录流程。正则表达式验证在LoginViewModel-

中完成
LoginFragment -> LoginViewModel -> AccountUseCase -> AccountRepoImpl -> AccountLocalDataSource or AccountRemoteDataSource

并且从DataSource to LoginFragment.一直返回响应

我将AccountUseCaseAccountRepoInterfaceAccountModel一起视为域文件夹的一部分。 AccountRepoImpl位于仓库文件夹中,AccountLocalDataSourceAccountRemoteDataSource位于数据源文件夹中。

我的问题是,理想情况下,域不应具有任何第三方依赖性。但是我的AccountUseCase向视图模型类发出了livedata,因此我的域正在使用android livedata依赖项,并且它并没有做很多事情,只是为loginuser调用了仓库。那么拥有这个用例是否有意义?

android kotlin android-livedata android-mvvm
1个回答
0
投票

LiveData依赖性而言,我建议您在这种情况下将其忽略。如果要使其具有反应性,则可以使用LiveDataRxJava之类的库,也可以使用自己的实现。没有什么区别。只是LiveData恰好由内部带有android字样的软件包提供。

关于用例,正如您所说的,您的应用很简单。[[当前]]。用例现在看来是多余的,因为在这种情况下逻辑很简单,但是一旦应用变得更加复杂,它将很有用。 我可以想到的某些情况:

    当登录逻辑更改时,您只需更新遵循单一职责模式(SRP)的AccountUseCase
  • 当您想在其他AccountUseCase中使用ViewModel而不是重复使用整个LoginViewModel时。
  • 如果所有逻辑都在domain layer内部,则这会使您的代码基础更加一致。而不是“隐藏” ViewModel内部的一些简单逻辑。
© www.soinside.com 2019 - 2024. All rights reserved.