什么是UseCase为什么要使用它?

2022-08-25  本文已影响0人  安安_660c

什么是UseCase?

UseCase的目的是成为 ViewModels 和 Repository 之间的中介。

假设将来您决定添加“编辑帖子”功能。您所要做的就是添加一个新的EditPost UseCase,其所有代码将与其他用例完全分离并分离。我们都见过很多次:引入了新功能,它们无意中破坏了先前存在的代码中的某些内容。创建一个单独的用例极大地帮助避免这种情况。

当然,你不能100%消除这种可能性,但你肯定可以把它降到最低。这就是 Clean Architecture 与其他模式的区别:代码是如此分离,以至于您可以将每一层都视为黑匣子。

为什么要使用UseCase?

我们了解** Clean Architecture**。它具有单独的层,其中之一是域层。域层包含应用程序的所有用例。用例负责处理单个任务。它简化了SOLID原则的单一责任原则的目的。

UseCase示例

下面给出了一个UseCase示例。我们从天气存储库获取每小时的天气数据。它正在处理单一响应和目的。

class HourlyDataUseCase {
    var weatherRepository: WeatherRepository = WeatherRepository()
    private val job = CoroutineScope(Dispatchers.IO)

    fun invoke(weatherRequestModel: WeatherRequestModel, isSuccess:(WeatherDataHourly)->Unit, isFailed:(String)->Unit) {
        val weather = weatherRepository.getHourly(
            weatherRequestModel.type,
            weatherRequestModel.host,
            weatherRequestModel.key,
            weatherRequestModel.lat,
            weatherRequestModel.lon
        )
        job.launch {
            weather.execute().apply {
                when (this.isSuccessful){
                    true->isSuccess.invoke(this.body()!!)
                    false->isFailed.invoke(this.message())
                }
            }
        }
    }
    fun cancel(onCancelled:()->Unit){
        job.cancel("Job Cancelled")
        onCancelled.invoke()
    }
}

使用UseCase的优势

链接:https://fakhrulasa.me/usecase

上一篇 下一篇

猜你喜欢

热点阅读