叩开抽象的大门(2)——依赖于抽象
2011-06-27 10:48
197 查看
依赖于抽象。这句话本身却很抽象,我也知道要依赖于抽象啊,但是什么叫依赖于抽象?如何做到依赖抽象?甚至于什么叫依赖?
一、依赖,就是没有不能你。
如果没有了你,我就不能生存。。。这个类图表明我对你存在依赖,即,我要完成生存();需要调用你的爱();
二、不再依赖你
如果我不依赖你,而依赖于抽象。那会发生什么情况呢?
就算没有了你,我还是能够正常生存(),只要爱我的人还在。
三、妖兽,第三者出现了!!!
更恐怖的是,除了第三者,还可以有第四者甚至是第五者……
尽管如此,我的生存力却大大地增强了。所以你知道了,这个世界上为什么有那么多花心的人。因为花心的人生存力强啊!!!因为我不依赖你了,所以有可能会出现这种状况。。。即使你不在了,我也可以好好地活下去。
四、真的不依赖了吗?
“依赖于抽象”话说得好听,但是做起来可没想像中那么容易哦。这个问题有的同学直到工作之后才搞明白。而我算是比较幸运的啦,可以看到大家的经验总结,早早地学到了这些东西。
尝试将以下类图转化为代码。
先看一下网上常见的示例代码。
class我{ public void 生存(){ …… 爱我的人 ni = new 你(); ni.爱(); …… } }
爱我的人 ni = new 你();
这里我们可能会忽略“你();”这个方法,因此我们往往误认为这段代码里没有用到你的方法,其实我要生存()还需要依赖于你的构造方法“你()”。很明显,这样的代码,我还是依赖你的。实际上,这段代码跟下面这段有什么区别?
class 我{ public void 生存(){ …… 你 ni = new 你(); ni.爱(); …… } }
下面看看如何真正解除我对你的依赖关系。
class我{ public void 生存(爱我的人 ren){ …… Ren.爱(); …… } }
发现了什么不同?----我的世界已经完全没了你!
在class 我的代码中,完全没有看到class 你。这也就真正的实现了解耦。
五、编后语
为了使我们创造的对象具有更强的生命力,我们要做的事情就是:依赖于抽象。
当然,在爱情中,祝大家都能找到这样的另一半哈。
如果对本文有什么疑问的,欢迎提出来一起探讨。我也在学习中^.^。
相关文章推荐
- 叩开抽象的大门(1)——抽象类、接口
- 依赖于抽象而不依赖与实现
- 利用抽象工厂创建DAO、利用依赖注入去除客户端对工厂的直接依赖、将有关Article的各种Servlet封装到一个Servlet中(通过BaseServlet进行
- 算法设计应该依赖抽象而不是业务
- 算法设计应该依赖抽象而不是业务
- 建议149:依赖抽象而不是实现
- 依赖于抽象而不依赖与实现,并不难理解。
- 算法设计应该依赖抽象而不是业务
- 什么是依赖,什么是抽象
- 在抽象工厂中使用依赖倒置
- 抽象依赖原则
- 依赖抽象,不要依赖具体
- 什么是依赖,什么是抽象
- 什么是依赖,什么是抽象
- 依赖抽象,不要依赖具体
- 不依赖于具体的抽象是毫无意义的
- 心想才能事成!不具备任何优势的我这样叩开网易的大门
- 算法设计应该依赖抽象而不是业务
- 依赖倒置原理:依赖、稳定的抽象层
- 叩开Apple设计奖项大门的7条设计建议