【发布时间】:2021-01-24 17:18:39
【问题描述】:
在我们的“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)
}
【问题讨论】:
标签: android mvvm clean-architecture anti-patterns