洗碗风波·Kotlin函数委托

像往常的任何一天一样,晚饭后又该洗碗了,妻子对着桌上的残局心中无限惆怅。谁吃饱饭不想舒舒服服的躺下来休息休息!七八年了,丈夫家务基本不干,望着丈夫连绵不绝此起彼伏的饭桶肚,妻子委屈极了。
于是妻子将洗碗任务交给了丈夫,不等丈夫反应,转身溜回到卧室休息。一脸惊愕的丈夫也懒散惯了,哪里经得起折腾,又吸了2根烟,望着门缝里正在写作业的儿子发呆。良久,丈夫嘴角一翘:任务又由丈夫转交给了儿子。
基于以上场景,Kotlin代码是这样描述的:

interface Clean{ // 定义一个洗碗的能力的接口
    fun washDishes()
}
// 妻子将洗碗的方法委托给丈夫去洗
class Wife() : Clean by Father()
// 丈夫转身又将任务交给了亲儿子
class Father() : Clean by Son()
class Son : Clean { 
    override fun washDishes() = println("儿子委屈的去洗碗")
}
// 具体执行的流程:
fun main() {
    Wife().washDishes()
}

以上的执行流程为:妻子发出洗碗的要求,随后将它委托给了丈夫。丈夫收到要求后将它委托给了儿子。最后儿子只能实现洗碗的函数。

以上的输出结果就是:儿子委屈的去洗碗

事后,妻子高度赞扬了丈夫有责任心,有家庭担当!并且洗碗这种事情就落在了丈夫的肩上。丈夫也不用真的去洗,也就默认接受了家庭规则。儿子委屈极了,宝宝苦!在被迫不计其数的劳役后,儿子忿忿不平地把事情真相告诉了妻子。

妻子是个良母,当然不忍心自己的儿子长期做杂工。她答应儿子一定帮他逃离苦海。

翌日晚,一家人吃饱了饭,丈夫主动承担下来洗碗的任务,随后默默等待妻子回卧室小憩。但这次妻子直接去儿子的卧室陪儿子写作业迟迟不肯出来。半小时过去了,丈夫心里急,习惯了慵懒的他只好默默的等妻子离去。

又过了很久妻子终于出来了,看到桌上仍然一片狼藉,便质问丈夫为什么还没洗。丈夫吸了一口烟,换换的坐起身来说,要不,今天让儿子去洗吧。妻子当然不同意。一番激烈的争论后妻子作出了让步,今天是最后一次让儿子洗碗!
以下记录了儿子含泪起身去洗碗的过程…

interface Clean{
    fun washDishes()
}
class Son : Clean
{
    override fun washDishes() = println("儿子来洗碗")
}
// 妻子将洗碗的方法委托给丈夫去洗
class Wife(val son: Son) : Clean by Father(son)
// 丈夫委托给儿子去洗
class Father(val son :Son) : Clean by son
fun main() {
    Wife(Son()).washDishes() //妻子在委托洗碗的时候就已经知道了要让儿子去洗
}

以上的执行流程为:妻子下达了洗碗命令后,将儿子交托给了丈夫。丈夫在执行洗碗的过程中,实际上是由儿子去洗碗的。与上一案例不同的是,这次妻子是事前就将儿子交托给了丈夫。
这是儿子最后一次洗碗。

从此丈夫每天晚饭后都会主动去洗刷自己的罪孽。母子俩过上了幸福的生活。


版权申明:未经作者同意,禁止转载。

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页