叩开抽象的大门(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

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

原文地址:https://www.cnblogs.com/weilao/p/2091159.html