朱涛 · Kotlin 编程第一课
朱涛
Google 认证的 Kotlin、Android 开发者专家,博客“Kotlin Jetpack 实战”作者
948 人已学习
立即订阅
登录后,你可以任选4讲全文学习
推荐试读
换一换
02 | 面向对象:理解Kotlin设计者的良苦用心
04 | 实战:构建一个Kotlin版本的四则运算计算器
05 | object关键字:你到底有多少种用法?
课程目录
已更新 11 讲/共 37 讲
开篇词 (1讲)
开篇词 | 入门Kotlin有多容易,精通Kotlin就有多难
加餐篇 (1讲)
加餐一 | 初识Kotlin函数式编程
基础篇 (9讲)
01 | Kotlin基础语法:正式开启学习之旅
02 | 面向对象:理解Kotlin设计者的良苦用心
03 | Kotlin原理:编译器在幕后干了哪些“好事”?
04 | 实战:构建一个Kotlin版本的四则运算计算器
05 | object关键字:你到底有多少种用法?
06 | 扩展:你的能力边界到底在哪里?
07 | 高阶函数:为什么说函数是Kotlin的“一等公民”?
08 | 实战:用Kotlin写一个英语词频统计程序
09 | 委托:你为何总是被低估?
朱涛 · Kotlin 编程第一课
15
15
1.0x
00:00/00:00
登录|注册
开通超级会员可免费学习本课程,还可解锁海量内容免费学特权。

09 | 委托:你为何总是被低估?

你好,我是朱涛。今天我们来学习 Kotlin 的委托特性。
Kotlin 的委托主要有两个应用场景,一个是委托类,另一个是委托属性。对比第 6 讲我们学过的扩展来看的话,Kotlin 委托这个特性就没有那么“神奇”了。
因为扩展可以从类的外部,为一个类“添加”成员方法和属性,因此 Kotlin 扩展的应用场景也十分明确,而 Kotlin 委托的应用场景就没那么清晰了。这也是很多人会“重视扩展”,而“轻视委托”的原因。
然而,我要告诉你的是,Kotlin“委托”的重要性一点也不比“扩展”低。Kotlin 委托在软件架构中可以发挥巨大的作用,在掌握了 Kotlin 委托特性后,你不仅可以改善应用的架构,还可以大大提升开发效率。
另外,如果你是 Android 工程师,你会发现 Jetpack Compose 当中大量使用了 Kotlin 委托特性。可以说,如果你不理解委托,你就无法真正理解 Jetpack Compose。
看到这里,想必你也已经知道 Kotlin 委托的重要性了,接下来就来开启我们的学习之旅吧!

委托类

我们先从委托类开始,它的使用场景非常简单易懂:它常常用于实现类的“委托模式”。我们来看个简单例子:
interface DB {
fun save()
}
class SqlDB() : DB {
override fun save() { println("save to sql") }
}
class GreenDaoDB() : DB {
override fun save() { println("save to GreenDao") }
}
// 参数 通过 by 将接口实现委托给 db
// ↓ ↓
class UniversalDB(db: DB) : DB by db
fun main() {
UniversalDB(SqlDB()).save()
UniversalDB(GreenDaoDB()).save()
}
/*
输出:
save to sql
save to GreenDao
*/
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
02 | 面向对象:理解Kotlin设计者的良苦用心
04 | 实战:构建一个Kotlin版本的四则运算计算器
05 | object关键字:你到底有多少种用法?
07 | 高阶函数:为什么说函数是Kotlin的“一等公民”?
08 | 实战:用Kotlin写一个英语词频统计程序
09 | 委托:你为何总是被低估?
开通超级会员免费畅看本课程
开通会员
该文章仅可免费阅读部分内容,如需阅读完整文章,请开通超级会员或单独购买本课程。
登录 后留言

精选留言(1)

  • 7Promise
    Kotlin 委托的使用场景:列表控件的适配器对象可以通过懒加载(by lazy)获得。可以待数据获取成功时才使用该适配器对象,从而避免不需要的时候创建该对象。
    2022-01-17
收起评论
1
返回
顶部