美文网首页Android 知识
Kotlin代码进阶模式-委托

Kotlin代码进阶模式-委托

作者: zcwfeng | 来源:发表于2022-05-05 19:02 被阅读0次

Delegates.kt

  • 属性委托

在Java代码中,一般使用接口来进行封装,而在kotlin中,可以通过委托机制来实现更加方便的委托模式。

关于封装的时候,使用set/get 非常实用的委托模式

  • 观察属性observable
var name:String by  Delegates.observable(""){_,_,newvalue->
    helper.getView<TextView>(R.id.tvName).text = newvalue
}

两次返回键退出的逻辑

private var backPressedTime by Delegates.observable(0L) { pre, old, new ->
    if (new - old < 2000) {
        finish()
    } else {
        Toast.makeText(this, "再按一次返回退出", Toast.LENGTH_SHORT).show()
    }
}
 
override fun onBackPressed() {
    backPressedTime = System.currentTimeMillis()
}
  • 条件观察属性vetoable

vetoable 与 observable一样,可以观察属性值的变化,不同的是,vetoable可以通过处理器函数来决定属性值是否生效

var vetoableProp: Int by Delegates.vetoable(0) { _, oldValue, newValue ->
        // 如果新的值大于旧值,则生效
        newValue > oldValue

    }

    vetoableProp = -1
    println(vetoableProp)

对比一下

var vetoableProp: Int by Delegates.vetoable(0) { _, oldValue, newValue ->
        // 如果新的值大于旧值,则生效
        newValue > oldValue

    }

    vetoableProp = -1//8

    println(vetoableProp)



    var observableProp: String by Delegates.observable("init value 0") { property, oldValue, newValue ->
        println("change: $property: $oldValue -> $newValue ")
    }

    println(observableProp)
    observableProp = "change value666666"
  • 类委托的使用场景

委托还可以用于在不修改原来代码及架构的基础上,对原有功能扩展或者修改

相关文章

  • Kotlin代码进阶模式-委托

    Delegates.kt 属性委托 在Java代码中,一般使用接口来进行封装,而在kotlin中,可以通过委托机制...

  • Kotlin中的委托

    Kotlin中的委托 啥是委托 其实kotlin中的委托的理念就是委托模式也是叫做代理模式;在Kotlin中委托有...

  • Kotlin委托

    Kotlin委托 1.Kotlin中的委托有两种形式,一种是委托模式,一种是委托属性。 2.委托模式是设计模式中的...

  • Kotlin for android学习八:委托

    前言 kotlin官网和kotlin教程学习教程的笔记。 一、类的委托 背景:委托模式是类继承模式之外的另一种很好...

  • Kotlin中的类委托和属性委托

    Kotlin的委托可分为类委托和属性委托。 一、类委托 类委托是代理模式的应用,而代理模式可以作为继承的一个不错的...

  • 【Android进阶】kotlin 委托

    委托模式是软件设计模式中的一项基本技巧。在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一...

  • Kotlin 进阶之路 目录

    Kotlin 进阶之路 目录 Kotlin 进阶之路1 基础语法Kotlin 进阶之路2 集合类型Kotlin 进...

  • 20.Kotlin属性委托

    Kotlin属性委托(delegated property) 示例代码 输出 语法是: val/var <属性名>...

  • 【Android进阶】kotlin委托属性

    输出: 上面代码冗余,所谓委托类,就是一个包含getValue和setValue函数的类,这两个函数operato...

  • Kotlin 委托模式用于 Android 开发

    委托模式被证明是一种很好的替代继承的方式,Kotlin 在语言层面对委托模式提供了非常优雅的支持(语法糖)。 先给...

网友评论

    本文标题:Kotlin代码进阶模式-委托

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