Kotlin学习笔记二十三、代理delegate

代理的定义:我代表/代替你处理你的事情。

我们先来定义一个接口:

interface Api{
    fun create()
    fun prepare()
    fun start()
    fun end()
}

再来看看他的实现类ApiImpl.kt :

class ApiImpl:Api {
    override fun create() {
        println("create()")
    }

    override fun prepare() {
        println("prepare()")
    }

    override fun start() {
        println("start()")
    }

    override fun end() {
        println("end()")
    }
}

这里很简单,没有什么需要特别说的。
然后再来看看另一种实现:

class ApiRoutine(val api: Api):Api {
    override fun create() {
        api.create()
    }

    override fun prepare() {
        api.prepare()
    }

    override fun start() {
        api.start()
    }

    override fun end() {
        api.end()
    }
}

上面api的说明:

“api: Api”里面的“api”对象是其他的实现了Api接口的类的对象:

var mApiImpl = ApiImpl()
var apiWrapper = ApiWrapper(mApiImpl)

其实这两种实现都是常规的实现,跟我们之前了解的接口实现并无不同。
我们再来看看如何实现 代理:

class ApiDelegate(val api: Api):Api by api {
    override fun prepare() {
        println("prepare is Cancelled")
    }
}

说明:

1、上面“:Api by api”的含义:对象“api”代替类“ApiDelegate”实现Api接口

2、对于对象api的唯一要求:实现被代理Api的接口

3、优点:只需要实现想要实现的某一个或者某几个方法,而不是全部方法。就比如上面的“ApiDelegate”,这里我们就只是实现了“prepare()”这一个方法。

在main()方法里面的调用:

    var mApiImpl = ApiImpl()
    var apiWrapper = ApiRoutine(mApiImpl)
    apiWrapper.create()

    var apiDelegate = ApiDelegate(mApiImpl)
    apiDelegate.prepare()

结果如下:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kotlin是一种现代化的静态类型编程语言,它可以在Java虚拟机(JVM)上运行,并且与Java语言高度兼容。如果你想学习Kotlin,以下是一个学习路线的建议: 1. 了解基础知识:开始学习Kotlin之前,建议先了解一些基本的编程概念和语法,比如变量、数据类型、条件语句、循环语句等。这将为你后续的学习打下坚实的基础。 2. 学习Kotlin语法:Kotlin与Java有很多相似之处,但也有一些不同之处。学习Kotlin的语法和特性,比如空安全、扩展函数、数据类等,可以通过官方文档、教程或在线课程来学习。 3. 实践编程:通过编写一些简单的程序来巩固所学的知识。可以尝试解决一些小问题或者完成一些小项目,这样可以更好地理解和应用Kotlin的语法和特性。 4. 深入学习面向对象编程:Kotlin是一种面向对象的编程语言,深入学习面向对象编程的概念和原则对于掌握Kotlin非常重要。学习类、对象、继承、多态等概念,并尝试在Kotlin中应用这些概念。 5. 学习Kotlin与Java的互操作性:由于Kotlin与Java高度兼容,学习如何在Kotlin中使用Java类库和框架是非常重要的。了解如何调用Java代码、处理Java集合等,可以帮助你更好地使用Kotlin进行开发。 6. 深入学习Kotlin的高级特性:一旦掌握了Kotlin的基础知识,可以进一步学习一些高级特性,比如协程、函数式编程、DSL等。这些特性可以提高你的代码质量和开发效率。 7. 参与实际项目:最好的学习方式是通过实践。尝试参与一些实际的项目或者开源项目,与其他开发者合作,这样可以提升你的编程能力和实践经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值