Kotlin -- 委托

来源:互联网 发布:windows update打不开 编辑:程序博客网 时间:2024/06/05 09:25

概述

所谓委托模式 ,就是为其他对象提供一种代理以控制对这个对象的访问,在Java开发过程中,是继承模式之外的很好的解决问题的方案,不熟悉委托模式的,可以参考博委托模式。

对于Kotlin而言,其直接支持委托模式,从而避免为了实现模式而不得不写那些常规的代码。又不得不赞叹,Kotlin的优雅,简洁。

by

Kotlin中,委托的实现依靠于关键字 by ,by表示将抽象主题的实例(by后边的实例)保存在代理类实例的内部,比如SportsManager类继承于ISports接口,并可以ISports接口的所有的 public 方法委托给一个指定的对象。

interface ISports {    fun doSports()}class SwimForSports: ISports{    override fun doSports() {        println("do swim")    }}class SportsManager(sport: ISports): ISports by sportfun main(args: Array<String>) {    val swimSports: SwimForSports = SwimForSports()    SportsManager(swimSports).doSports()// Log:do swim}

在SportsManager声明中,by子句表示,将sport保存在SportsManager的对象实例内部,而且编译器将会生成继承自 ISports 接口的所有方法, 并将调用转发给sport。