在我们的“SearchUsecase”中,我们可以直接访问“ShowFtsDao”。
是否违反清洁架构原则?是否违反MVVM体系结构?
假设我们的目的是开发一个精心构建的标准结构,那么这段代码有什么问题吗?
class SearchUsecase @Inject constructor(
private val searchRepository: SearchRepository,
private val showFtsDao: ShowFtsDao,
private val dispatchers: AppCoroutineDispatchers
) : SuspendingWorkInteractor<SearchShows.Params, List<ShowDetailed>>() {
override suspend fun doWork(params: Params): List<ShowDetailed> {
return withContext(dispatchers.io) {
val remoteResults = searchRepository.search(params.query)
if (remoteResults.isNotEmpty()) {
remoteResults
} else {
when {
params.query.isNotBlank() -> showFtsDao.search("*$params.query*")
else -> emptyList()
}
}
}
}
data class Params(val query: String)
}
最佳答案
我相信您的用例处理的逻辑超出了需要。
作为一个简单的解释,我喜欢这样考虑组件:
get()
或fetch()
,消费者在其中指定是否要获取最新数据,并基于该存储库调用正确的Source。关于android - 道用例。 MVVM还是Clean Architecture反模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65873656/