我有一个架构问题。目前,我的应用非常简单,用户登录并获得餐厅列表即可注销。我将kotlin协程用于异步部分,mvvm实时数据和koin DI。
这是用户单击登录名时的登录流程。正则表达式验证在LoginViewModel
-
LoginFragment -> LoginViewModel -> AccountUseCase -> AccountRepoImpl -> AccountLocalDataSource or AccountRemoteDataSource
并且从DataSource to LoginFragment.
一直返回响应
我将AccountUseCase
和AccountRepoInterface
与AccountModel
一起视为域文件夹的一部分。 AccountRepoImpl
位于仓库文件夹中,AccountLocalDataSource
和AccountRemoteDataSource
位于数据源文件夹中。
我的问题是,理想情况下,域不应具有任何第三方依赖性。但是我的AccountUseCase
向视图模型类发出了livedata
,因此我的域正在使用android livedata
依赖项,并且它并没有做很多事情,只是为loginuser调用了仓库。那么拥有这个用例是否有意义?
就LiveData
依赖性而言,我建议您在这种情况下将其忽略。如果要使其具有反应性,则可以使用LiveData
或RxJava
之类的库,也可以使用自己的实现。没有什么区别。只是LiveData
恰好由内部带有android
字样的软件包提供。
关于用例,正如您所说的,您的应用很简单。[[当前]]。用例现在看来是多余的,因为在这种情况下逻辑很简单,但是一旦应用变得更加复杂,它将很有用。 我可以想到的某些情况:
AccountUseCase
。AccountUseCase
中使用ViewModel
而不是重复使用整个LoginViewModel
时。domain layer
内部,则这会使您的代码基础更加一致。而不是“隐藏” ViewModel
内部的一些简单逻辑。