Kotlin(四)委托|Kotlin(四)委托、复合符号

1、在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。
2、Delegation类并没有实现 IDelegateListener 中的 delegate() 方法,而是通过by这个关键字,将本应该实现的方法委托给了Bean,由Bean来实现方法
委托属性
定义一个委托属性的语法是: val/var : by ,by后面的就是属性的委托。委托属性不需要实现接口,只需要用operator修饰的 setValue() getValue函数。如果是val属性 则不用提供setValue()
【Kotlin(四)委托|Kotlin(四)委托、复合符号】3、延迟属性 lazy
通过lazy可以定义一个懒加载属性,只有val类型的属性才能延迟初始化,且只初始化一次,lazy()是接受一个 lambda 并返回一个 Lazy 实例的函数,返回的实例可以作为实现延迟属性的委托: 第一次调用 get() 会执行已传递给 lazy() 的 lambda 表达式并记录结果, 后续调用 get() 只是返回记录的结果。
4、复合符号( ‘?.’ ‘?:’ ‘!!’ ‘as?’ ‘?’ )

//可以复合符号类似以下代码 if (foo != null){ return foo.bar() }else{return null }

    推荐阅读