初学Java模式,参考他人的脚本写了个安全的单例模式的数据库连接DAO
package com.jobbole; import java.sql.DriverManager; import java.sql.Connection; import java.sql.SQLException; /* 使用nested class 来实现安全的单例模式 */ public class SecuritySingleton { /*Initialization on Demand Holder. 这种方法使用内部类来做到延迟加载对象,在初始化这个内部类的时候, * JLS(Java Language Sepcification)会保证这个类的线程安全。这种写法完全使用了Java虚拟机的机制进行同步保证, * 没有一个同步的关键字。 **/ private static final String className = ""; private static final String url = ""; private static final String user = ""; private static final String password = ""; // 通过静态代码块注册数据库驱动,保证注册只执行一次 static{ try { Class.forName(className); // 注册驱动 } catch (ClassNotFoundException e) { e.printStackTrace(); } } private SecuritySingleton(){} public static SecuritySingleton getInstance(){ return SingletonHolder.instance; } public Connection getConnection(){ Connection conn = null; try { conn = DriverManager.getConnection(url, user, password); } catch (SQLException e) { e.printStackTrace(); } return conn; } private static class SingletonHolder{ public static final SecuritySingleton instance = new SecuritySingleton(); } }