代理模式--教你爸妈开婚介所

作者: space0o0 | 来源:发表于2019-06-11 17:06 被阅读28次

    人物:小熊(被代理人);熊爸熊妈(代理人)

    场景:
    程序员小熊公司实行997,每天都被压榨加班,完全没有时间在夕阳下奔跑。
    可是熊爸熊妈急呀,都快30的熊了,连女孩子的小手都没牵过。
    “崽呀,你都这么大个熊了,咋还找不到女孩子呢?”
    小熊没办法呀,那就默许熊爸熊妈去相亲公园替自己把关下吧~

    那熊爸熊妈要知道小熊存了多少私房钱,名下有多少资产。所以这两个对象都实现同一个接口,熊爸熊妈不能动这些钱,当小熊可以呀。

    那就先看看小熊有啥资产

    interface Asset {
        //工资
        fun salary()
        //车子
        fun carNumber()
        //房子
        fun houseNumber()
    }
    

    然后创建小熊和熊爸熊妈两个类

    //小熊的类
    class Son : Asset {
        //月薪
        override fun salary() {
            println("小熊一个月赚50k!")
        }
    
        //有几辆车
        override fun carNumber() {
            println("小熊有一辆奥迪!!")
        }
    
        //有几套房
        override fun houseNumber() {
            println("小熊有一套89平的大房子!!!")
        }
    }
    
    //熊爸熊妈
    class FatherMother(man: Asset) : Asset {
    
        //如果小熊有个朋友,把自己的几个条件也告诉了熊爸熊妈,让他们也帮自己找个女朋友,我们也可以把小熊的朋友传入
        var son: Asset = man
    
        constructor() : this(Son())//默认是小熊
    
        override fun salary() {
            son.salary()
        }
    
        override fun carNumber() {
            son.carNumber()
        }
    
        override fun houseNumber() {
            son.houseNumber()
        }
    }
    

    熊爸熊妈这就来到相亲公园

    //相亲公园一角
    fun main(args: Array<String>) {
    
        //熊爸熊妈来了
        var fatherMother = FatherMother()
    
        //相亲对象的父母也来了,寒暄一下,开始介绍自家小熊条件
    
        //报下月薪,骄傲~
        fatherMother.salary()
        //说下车子
        fatherMother.carNumber()
        //再说下房子
        fatherMother.houseNumber()
    
        //对方也介绍了下自家情况,双方都很满意,家长就高高兴兴的回家了
    }
    
    //logical
    小熊一个月赚50k!
    小熊有一辆奥迪!!
    小熊有一套89平的大房子!!!
    

    如果小熊朋友也想让熊爸熊妈帮忙找个女孩子,

    //小熊他朋友
    class SonFriend:Asset{
        override fun salary() {
            println("朋友一个月收租30k")
        }
        override fun carNumber() {
            println("朋友有2辆车")
        }
        override fun houseNumber() {
            println("朋友有8套房!!!")
        }
    }
    

    那熊爸熊妈还是代理人

        //熊爸熊妈记起还有个小熊的朋友
        fatherMother = FatherMother(SonFriend())
        //报个月薪
        fatherMother.salary()
        //说下车子
        fatherMother.carNumber()
        //说下房子
        fatherMother.houseNumber()
    
    //logcat
    朋友一个月收租30k
    朋友有2辆车
    朋友有8套房!!!
    

    从此,熊爸熊妈开起了婚介所。。。

    在代理模式中,代理人对被代理人的能力非常清楚,代理人也就可以作为包装类暴露出来,通过代理来完成目的。

    相关文章

      网友评论

        本文标题:代理模式--教你爸妈开婚介所

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