• 叩开抽象的大门(2)——依赖于抽象


    依赖于抽象。这句话本身却很抽象,我也知道要依赖于抽象啊,但是什么叫依赖于抽象?如何做到依赖抽象?甚至于什么叫依赖?

    一、依赖,就是没有不能你。

    wps_clip_image-30360

          如果没有了你,我就不能生存。。。这个类图表明我对你存在依赖,即,我要完成生存();需要调用你的爱();

    二、不再依赖你

         如果我不依赖你,而依赖于抽象。那会发生什么情况呢?

    wps_clip_image-11333

          就算没有了你,我还是能够正常生存(),只要爱我的人还在。

    三、妖兽,第三者出现了!!!

    wps_clip_image-23313

          更恐怖的是,除了第三者,还可以有第四者甚至是第五者……

          尽管如此,我的生存力却大大地增强了。所以你知道了,这个世界上为什么有那么多花心的人。因为花心的人生存力强啊!!!因为我不依赖你了,所以有可能会出现这种状况。。。即使你不在了,我也可以好好地活下去。

    wps_clip_image-1379

    四、真的不依赖了吗?

          “依赖于抽象”话说得好听,但是做起来可没想像中那么容易哦。这个问题有的同学直到工作之后才搞明白。而我算是比较幸运的啦,可以看到大家的经验总结,早早地学到了这些东西。

    尝试将以下类图转化为代码。

    wps_clip_image-12223

    先看一下网上常见的示例代码。

    class我{

    public void 生存(){

    ……
    爱我的人 ni
    = new 你();

    ni.爱();

    ……
    }

    }

    爱我的人 ni = new 你();

    这里我们可能会忽略“你();”这个方法,因此我们往往误认为这段代码里没有用到你的方法,其实我要生存()还需要依赖于你的构造方法“你()”。很明显,这样的代码,我还是依赖你的。实际上,这段代码跟下面这段有什么区别?

    class 我{

    public void 生存(){

    ……

    你 ni
    = new 你();

    ni.爱();

    ……
    }

    }

    下面看看如何真正解除我对你的依赖关系。

    class我{

    public void 生存(爱我的人 ren){

    ……

    Ren.爱();

    ……

    }

    }

    发现了什么不同?----我的世界已经完全没了你!

    在class 我的代码中,完全没有看到class 你。这也就真正的实现了解耦。

    五、编后语

    为了使我们创造的对象具有更强的生命力,我们要做的事情就是:依赖于抽象。

    当然,在爱情中,祝大家都能找到这样的另一半哈。

    wps_clip_image-3172

    如果对本文有什么疑问的,欢迎提出来一起探讨。我也在学习中^.^。

  • 相关阅读:
    CodeForces 687B Remainders Game
    CodeForces 689D Friends and Subsequences
    CSU 1810 Reverse
    生成树收录
    吃奶酪
    带逆向思维的并查集
    中位数定理
    种类并查集(关押犯人)
    带权并查集
    分层图
  • 原文地址:https://www.cnblogs.com/weilao/p/2091159.html
Copyright © 2020-2023  润新知