美文网首页
代理和委托

代理和委托

作者: GaoXiaoGao | 来源:发表于2020-12-21 09:48 被阅读0次

    主要通过关键字 by

    IWashBowl 是洗碗的接口,小头爸爸将洗碗的任务委托给大头儿子来洗
    即 by BigheadSon()

    //这种方式大头儿子会创建两次
    class SmallHeadFather : IWashBowl by BigheadSon(){
        override fun washing() {
            println("我是小头爸爸,一次赚10元钱");
            BigheadSon().washing()
            println("看着儿子洗碗")
        }
    }
    

    大头儿子类

    class BigheadSon:IWashBowl{
        override fun washing() {
            println("我是大头儿子,下在洗碗,一次赚1元钱");
        }
    }
    

    因为头儿子被委托洗碗,即使小头爸爸中没有洗碗方法,也是可以通过大头儿子来洗碗的

    class SmallHeadFather : IWashBowl by BigheadSon(){
    }
    

    大头儿子类修改为 object

    object BigheadSon:IWashBowl{
        override fun washing() {
            println("我是大头儿子,下在洗碗,一次赚1元钱");
        }
    }
    

    则委托时可以去掉()

    //这种方式大头儿子在内存中只有一个
    class SmallHeadFather : IWashBowl by BigheadSon{
        override fun washing() {
            println("我是小头爸爸,一次赚10元钱");
            BigheadSon.washing()
            println("看着儿子洗碗")
        }
    }
    

    相关文章

      网友评论

          本文标题:代理和委托

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