Kotlin技术 - 委托和代理

Kotlin技术 - 委托和代理,第1张

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 。建议代理人用单例。

更多

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/992781.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存