48.类委托

作者: 写代码的向日葵 | 来源:发表于2019-10-04 20:37 被阅读0次

1.第一种方式代码如下

fun main(args: Array<String>) {
    val smallHeadFeather = SmallHeadFeather()
    smallHeadFeather.wash()
}

//洗完能力
interface Washpower {
    //洗碗
    fun wash()
}

//大头儿子
class BigHeadSon : Washpower {
    override fun wash() {
        println("大头儿子开始洗碗了")
    }
}

//小头爸爸,将洗碗能力委托给大头儿子
class SmallHeadFeather : Washpower by  BigHeadSon()
  • 类委托通过关键字by来实现

2.类委托第二种实现方式

fun main(args: Array<String>) {

    val bigHeadSon =BigHeadSon()

    val smallHeadFeather = SmallHeadFeather(bigHeadSon)
    smallHeadFeather.wash()
}

//洗完能力
interface Washpower {
    //洗碗
    fun wash()
}

//大头儿子
class BigHeadSon : Washpower {
    override fun wash() {
        println("大头儿子开始洗碗了")
    }
}

//小头爸爸,将洗碗能力委托给大头儿子
class SmallHeadFeather(val washpower: Washpower) : Washpower by washpower
  • 相比较之下:第二种方式扩展性更强

3.类委托加强,在调用方法前后加上一些操作,例如下面代码


fun main(args: Array<String>) {

    val bigHeadSon = BigHeadSon()

    val smallHeadFeather = SmallHeadFeather(bigHeadSon)
    smallHeadFeather.wash()
}

//洗完能力
interface Washpower {
    //洗碗
    fun wash()
}

//大头儿子
class BigHeadSon : Washpower {
    override fun wash() {
        println("大头儿子开始洗碗了")
    }
}

//小头爸爸,将洗碗能力委托给大头儿子
class SmallHeadFeather(val washpower: Washpower) : Washpower by washpower {
    override fun wash() {
        println("付给小头儿子一块钱")
        //小头儿子洗碗功能
        washpower.wash()
        println("干得很好,下次继续")
    }
}
  • 输出结果如下:


    image.png

相关文章

  • 48.类委托

    1.第一种方式代码如下 类委托通过关键字by来实现 2.类委托第二种实现方式 相比较之下:第二种方式扩展性更强 3...

  • Java代理模式

    代理的实现分为: 1.静态代理实现 2.动态代理 委托类和委托对象:委托类是一个类,委托对象是委托类的实例。代理类...

  • Kotlin中的类委托和属性委托

    Kotlin的委托可分为类委托和属性委托。 一、类委托 类委托是代理模式的应用,而代理模式可以作为继承的一个不错的...

  • 委托,Lambda,事件

    委托 声明委托 Lambda 事件与委托的区别 事件不能再类的外部调用,可以在外部注册 委托可以在类的外部调用,可...

  • 常用工具类

    CommonUtils 工具类 常用工具类 添加依赖 kotlin扩展/委托 sharePreferences委托...

  • 10月30日C#学习总结

    今天学习了委托和事件。 委托:委托是一个类,它定义了方法的类型,与其他的类不同,委托类具有一个签名,并且它只能对与...

  • Kotlin 委托

    Kotlin 委托 1. 类委托 在 Kotlin 中用 by 关键字来表示委托 1. 类委托的第一种实现方式 T...

  • 代理简记

    Java静态代理 委托类和代理类,实现共同接口 共同接口: 委托类: 代理类: 测试结果: Java动态代理 通过...

  • Kotlin 入门(四):委托

    委托 类委托 类 Derived 可以继承一个接口 Base ,并将其所有...

  • .NET委托,事件和Lambda表达式

    委托 委托是什么? 委托是一种引用类型(其实就是一个类,继承MulticastDelegate特殊的类。),表示对...

网友评论

    本文标题:48.类委托

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