还有我把这个类引进来调用它里面的方法跟new一个对象在调用有什么区别,跪求大神讲解一下,万分感谢……

解决方案 »

  1.   

    个人觉得你这个类写的不够专业,槽点很多啊
    1.类名首字母小写?
    2.Connection这个变量在这个场景下根本没有定义的意义,直接把getConn定义成静态方法,直接返回DriverManager拿到的对象不就行了?
    3.ConnectionFactory没有任何做单例对象的意义,可以去掉
      

  2.   

    你这个工具类是单例模式的,私有化了构造函数,所以不能直接通过new 来获取对象,只能通过内部的方法获取对象,而对象也是静态的,所以也就是说获取的对象都是同一个,节省了内存空间。不过JDBC的工具类完全没必要这么写,直接把你的getConnection方法定义成静态的就可以了。要获取连接对象的时候,直接通过类名点出来,方便好用
      

  3.   

    new是每次创建一个新对象。单例就是每次都访问的同一个对象
      

  4.   

    打.调用不就是null了吗?这个工具类写得不好,应该是方法静态
    调用它里面的方法跟new一个对象在调用没有区别,只是不可能new了,因为构造器私有化了
      

  5.   

    connectionFactory 工厂类创建数据库连接, 工厂是一个单例的,通过工厂来获取连接.
      

  6.   

    你调用的永远都是一个 而你new的新的会有多个
      

  7.   

    首先,有一点,你写成静态的,点出来的connection是不是没有初始化,那是个null的,点出来没有用。其次,你的单例是成立的,但是这种方式可读性不强。再就是,你就是在把connection写成静态,要么在static代码块里面初始化,要是直接初始化。这种方式和你用静态方法的方式区别是一个是延迟加载,是有当调用get方法的时候才会去加载和初始化connection,而另外一种就是直接加载,当虚拟机加载ConnectionFactory的时候就会提前编译static修饰的属性和方法。
    不理解,可以参考饿汉式,饱汉式单例模式。