在学习MVC设计中有研究了一下DriverManger这个类的源码,其中有一写问题自己很纠结。。。。。。。。。...

根据我们初学java的知识可知道,当一个接口作为方法返回类型时,该方法返回的既是接口的实现类对象,用接口做返回值可以返回这个接口底下所有的实现类(不能叫子类,我看有些文章写的是子类,纠正下:接口只能称之为实现类,没有子类的说法,因为它和类没有继承关系,是实现的关系,我认为对这个还是要严谨区分来比较好。),那么问题来了,我们看API中有好多方法的返回值都是接口,而问题就在于这个接口没有实现类,那接口肯定是不能直接返回的呀,这个怎么理解呢?

 

比如看DriverManger这个类源码部分:

在API上查阅interface Connection 没有任何实现类

通过后面的理解通过上面的源码可以看出,最后是通过反射返一个对象,这个方法内部已经给我们返回了connection的实现类,所以,一般看到返回没有实现类的接口时,返回的实现类是在方法里给放回的,我们不能直观的看出他的实现类,这就是代码的多样性吧,有时间真的可以好好了解一下数据库底层源码的一些设计模式,包括后面的框架学习,真的代码很精辟和优雅!

返回值是接口的好处是,无论返回什么样的实现类我们都不需要知道,不管怎样都可以调用接口的方法,目的就是想使用接口的方法。

转载于:https://www.cnblogs.com/kyrieblog/p/10719744.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值