美文网首页
Kotlin学习之初探——Delegate代理

Kotlin学习之初探——Delegate代理

作者: Shawn_GBWang | 来源:发表于2020-09-07 09:35 被阅读0次

    代理是什么

    接口代理:对象x代替当前类a实现接口b*的方法
    *属性代理:对象x代替属性a实现getter/setter方法,lazy就是一个属性代理

    举例说明

    interface Api {
    fun method1()
    fun method2()
    fun method3()
    }
    class ApiTest : Api{
    override fun method1() {
    Log.i("shawn","ApiTest=method1")
    }
    override fun method2() {
    Log.i("shawn","ApiTest=method2")
    }
    override fun method3() {
    Log.i("shawn","ApiTest=method3")
    }
    }
    /**
    * 对象api代替ApiWrapper实现接口Api
    * */
    class ApiWrapper(api:Api) : Api by api{
    override fun method1() {
    Log.i("shawn","ApiWrapper=method1")
    }
    }
    调用:val a:ApiTest = ApiTest()
    val b:ApiWrapper = ApiWrapper(a)
    b.method1()
    b.method2()
    输出结果:ApiWrapper=method1
    ApiTest=method2

    属性代理Setter/Getter

       val name: String by lazy {
    
            name1.split(" ")[0]
        }
        var state:Int by Delegates.observable(100){
            property, oldValue, newValue ->
            Log.i("shawn", "oldValue=${oldValue},newValue=$newValue")
        }

    相关文章

      网友评论

          本文标题:Kotlin学习之初探——Delegate代理

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