Android MVVM 干净的架构与实时数据



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

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

LoginFragment -> LoginViewModel -> AccountUseCase -> AccountRepoImpl -> AccountLocalDataSource or AccountRemoteDataSource

回应是从DataSource to LoginFragment.一路走来

我认为AccountUseCaseAccountRepoInterfaceAccountModel一起作为域文件夹的一部分。AccountRepoImpl位于存储库文件夹和AccountLocalDataSource中,AccountRemoteDataSource位于数据源文件夹中。

我的问题是理想情况下,域不应具有任何第三方依赖项。但是我的AccountUseCase向 viewmodel 类发出livedata,因此我的域正在使用android livedata依赖项,而且它没有做太多事情,而只是为 loginuser 调用存储库。那么拥有这个用例有意义吗?

LiveData依赖关系而言,我建议您在这种情况下忽略它。如果你想让它成为反应式的,要么使用像LiveDataRxJava这样的库,要么有自己的实现。没有太大区别。只是LiveData恰好由一个包含单词android的包裹提供。

关于用例,正如您所说,您的应用程序目前很简单。用例目前似乎是多余的,因为在这种情况下逻辑很简单,但是一旦应用程序变得更加复杂,它将很有帮助。

我能想到的一些场景:

  • 当登录逻辑更改时,您只需更新遵循单一责任模式 (SRP( 的AccountUseCase
  • 当您想在其他ViewModel中使用该AccountUseCase而不是重用整个LoginViewModel时。
  • 如果所有逻辑都在domain layer内,这将使您的代码库更加一致。而不是将一些简单的逻辑"隐藏"在您的ViewModel中.

相关内容

  • 没有找到相关文章

最新更新