美文网首页
什么是UseCase为什么要使用它?

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

作者: 安安_660c | 来源:发表于2022-08-25 10:41 被阅读0次

什么是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的优势

  • 帮助删除代码重复:现在,我们可以轻松调用 USE CASE 类中的一个方法来访问两个不同的 ViewModels 中的用户配置文件数据,而不是将相同的过程放在两个不同的 ViewModels 中。

  • Screaming Architecture:当我们可以通过一目了然地瞥一眼就能获得新项目所做工作的基本概念时,我们称之为“Screaming Architecture:”。同样,用例应该以这样的方式编写,任何人都可以通过浏览类名来弄清楚他们做了什么。例如,GetUsersUseCase 用于从数据源中检索用户列表。

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

相关文章

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

    什么是UseCase? UseCase的目的是成为 ViewModels 和 Repository 之间的中介。 ...

  • 什么是memcache?为什么要使用它?

    1.背景介绍 什么是Memcache? MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系...

  • 什么是WebPack,为什么要使用它?

    1、什么是Webpack WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScri...

  • 什么是BLOB URL,为什么要使用它?

    在百家号上,发现视频src如下所示: src="blob:https://... 是可以播放和打开,很神奇,我就去...

  • 什么是闭包,如何使用它,为什么要使用它?

    闭包就是能够读取其他函数内部变量的函数。由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因...

  • Webpack

    什么是WebPack,为什么要使用它? 为什要使用WebPack 现今的很多网页其实可以看做是功能丰富的应用,它们...

  • webpack入门

    什么是WebPack,为什么要使用它 为什要使用WebPack 现今的很多网页其实可以看做是功能丰富的应用,它们拥...

  • Java 反射机制

    本篇文章,翻译自Java Reflection Tutorial 什么是反射?为什么要使用反射?如何用它? 什么是...

  • React快速入门

    Welcome to React! React是什么?为什么要使用它? React是Facebook内部的一个Ja...

  • 2019-01-08

    Welcome to React! React是什么?为什么要使用它? React是Facebook内部的一个Ja...

网友评论

      本文标题:什么是UseCase为什么要使用它?

      本文链接:https://www.haomeiwen.com/subject/esvagrtx.html