Kotlin 类型安全构建器实战:优化资源状态处理
在 Kotlin 开发中,类型安全构建器可以帮助我们更安全、简洁地创建对象。将以 Android 应用中的资源状态处理为例,展示如何利用类型安全构建器优化代码。
假设我们有一个 Resource
类,它包含 Success
、Loading
和 Error
三种状态,用于封装网络请求的结果。在之前的代码中,我们通过观察 TestViewModel
的 userInfoData
并使用 when
表达式处理不同状态,这会导致代码冗余。
为了解决这个问题,我们可以创建一个 ResourceObserver
类,它实现了 Observer
接口,并利用类型安全构建器的概念,根据不同的 Resource
子类执行相应的回调。
ResourceObserver
类接受一个 Lambda 表达式作为参数,该表达式会在对应的状态下调用相应的处理函数:
class ResourceObserver : Observer {
private var success: (Resource.Success.() -> Unit)? = null
private var error: (Resource.Error.() -> Unit)? = null
private var loading: (Resource.Loading.() -> Unit)? = null
fun success(block: Resource.Success.() -> Unit) {
success = block
}
fun error(block: Resource.Error.() -> Unit) {
error = block
}
fun loading(block: Resource.Loading.() -> Unit) {
loading = block
}
override fun onChanged(t: Resource) {
when (t) {
is Resource.Success -> t.success?.invoke(t)
is Resource.Error -> t.error?.invoke(t)
is Resource.Loading -> t.loading?.invoke(t)
}
}
}
42.83KB
文件大小:
评论区