DriverManager类是Java中的Singleton吗?

时间:2013-04-19 22:35:46

标签: java singleton

this来源我读到了:

  

您可能有使用JDBC驱动程序的经验。例如,   classloader尝试加载和链接中的Driver类   “org.gjt.mm.mysql”包。如果成功,则静态初始化程序为   调用。

Class.forName("org.gjt.mm.mysql.Driver"); 
Connection con = DriverManager.getConnection(url,"myLogin", "myPassword"); 
  

让我们看看为什么需要Class.forName()将驱动程序加载到内存中。所有JDBC   驱动程序有一个静态块,可以使用DriverManager注册自己   和DriverManager只有静态初始化程序。

     

MySQL JDBC Driver有一个静态初始化程序,如下所示:

 static {
     try {
         java.sql.DriverManager.registerDriver(new Driver());
     } catch (SQLException E) {
         throw new RuntimeException("Can't register driver!");
     } }

这是否意味着DriverManager是Singleton类?

1 个答案:

答案 0 :(得分:5)

这不是单身人士。它是一个纯实用程序类,只有静态方法。这个类有0个实例。单例将有一个类的实例,您可以访问此实例以在其上调用实例方法。

Java已被记录,它是开源的。您可以查看类的来源以了解它的工作原理。