zoukankan      html  css  js  c++  java
  • 在学习MVC设计中有研究了一下DriverManger这个类的源码,其中有一写问题自己很纠结。。。。。。。。。

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

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

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

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

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

  • 相关阅读:
    [bzoj4942][noi2017]整数【线段树】
    面向对象的几个函数
    各种编码方式及其来历
    java nio中,HeapByteBuffer与DirectByteBuffer的区别
    volatile关键字的作用
    git常用命令
    关于git的一些零碎知识
    rm(操作系统的删除文件)与git rm的区别
    php的数组
    SQL Server中模式(schema)、数据库(database)、表(table)、用户(user)之间的关系
  • 原文地址:https://www.cnblogs.com/kyrieblog/p/10719744.html
Copyright © 2011-2022 走看看