Kotlin技术 - 委托和代理

Kotlin技术 - 接口代理

就是我实现一个接口, 但是我不想去实现这个接口里的方法的时候就可以委托代理去完成。关键字: By

委托,也就是委托模式,它是23种经典设计模式种的一种,又名代理模式,在委托模式中,有2个对象参与同一个请求的处理,接受请求的对象将请求委托给另一个对象来处理。委托模式是一项技巧,其他的几种设计模式如:策略模式、状态模式和访问者模式都是委托模式的具体场景应用。
委托模式中,有三个角色,约束、委托对象和被委托对象。

约束: 约束是接口或者抽象类,它定义了通用的业务类型,也就是需要被代理的业务
被委托对象: 具体的业务逻辑执行者
委托对象: 负责对真是角色的应用,将约束累定义的业务委托给具体的委托对象。

一 定义接口 (妈妈有个任务)
interface IWashBow {
    fun washing()
}
二 Son 实现接口并实现方法(儿子可以做)
object Son : IWashBow {
    override fun washing() {
        Log.i(">>>>>>>>", "washing: 儿子在洗碗 ")
    }

    fun playCar() {
        Log.i(">>>>>>>>", "playCar: 儿子在玩小汽车 ")
    }
}
三 Father 实现接口并实现方法(爸爸可以做)
class Father : IWashBow  {
    override fun washing() {
        Log.i(">>>>>>>>", "washing: 爸爸在洗碗")
    }

    fun playMM() {
        Log.i(">>>>>>>>", "playMM: 爸爸在跟妈妈玩 ")
    }
}
4 测试(妈妈让爸爸做)
    private fun initTest() {
        val father = Father()
        father.washing()
        father.playMM()
    }

运行结果:

I/>>>>>>>>: washing: 爸爸在洗碗
I/>>>>>>>>: playMM: 爸爸在跟妈妈玩 

如果爸爸只想跟妈妈玩,不想去洗碗怎么办呢???

5 接口代理(爸爸委托儿子去做)
class Father : IWashBow by Son  {
    fun playMM() {
        Log.i(">>>>>>>>", "playMM: 爸爸在跟妈妈玩 ")
    }
}

运行结果:

I/>>>>>>>>: washing: 儿子在洗碗 
I/>>>>>>>>: playMM: 爸爸在跟妈妈玩 

总结:

这里的儿子就是代理人, 爸爸是委托人。在Father可以通过关键字 by ,把自己不想干的事委托给Son 。建议代理人用单例。

更多

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值