java中的单态类,单态模式

3 篇文章 0 订阅
1 篇文章 0 订阅

/**
 * 
 * 饿汉式单态类(不管有没有其他类调用该类,或者说不管有没有其他类使用该类,内部都已经创建了god对象,[说通俗一点就是急的不行,所以叫做饿汉式单态类])
 * 还有一个懒汉式单态类(也就是懒惰的)
 */
public class God {
	
	//static表示唯一的(饿汉式,急的不行,先new创建对象再说,不管有没有其他类调用该类)
	private static God god = new God();
	
	/**
	 * 把构造方法定义为private的,表示只有自己内部可以访问,外部无法访问(即外面无法通过new关键字创建该对象)
	 */
	private God() {
		super();
	}
	
	/**
	 * 静态方法返回自己的实例
	 * 
	 */
	public static God getGod() {
		return god;
	}
}
/**
 * 
 * 懒汉式单态类
 */
public class LazyGod {

	//懒汉式(先不创建对象,等要用到的时候再new创建对象)
	private static LazyGod lazyGod = null; 
	
	private LazyGod() {
		super();
	}
	
	/**
	 * 
	 * 需要添加synchronized关键字,如果是多线程的程序的话,可以防止创建多个lazyGod对象,所以需要添加synchronized关键字
	 */
	public synchronized static LazyGod getLazyGod() {
		if(lazyGod == null){
			lazyGod = new LazyGod();
		}
		return lazyGod;
	}

}

/**
 *
 *  数据库配置信息
 */
public interface DBConfig {
	
	public  static final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
	public  static final String URL = "jdbc:sqlserver://localhost:1433;databaseName=testDB";
	public  static final String USERNAME = "sa";
	public  static final String PASSWORD = "123456";
	
}

/**
 * 单态数据库连接类(其实这不是严格意义上的单态连接类,因为用户还是可以通过DriverManager.getConnection()方法来得到
 * conn对象,所以我们写的SingletonConnection这个类算是个伪单态类吧
 * )
 */
public class SingletonConnection {
	
	private static Connection conn = null;
	
	private SingletonConnection() {
		super();
	}
	
	/**
	 * 
	 * 需要添加synchronized关键字,如果是多线程的程序的话,可以防止创建多个Connection对象,所以需要添加synchronized关键字
	 */
	public synchronized static Connection getConnection() throws ClassNotFoundException, SQLException {
		if (conn == null) {
			Class.forName(DBConfig.DRIVER);
			conn = DriverManager.getConnection(DBConfig.URL, DBConfig.USERNAME, DBConfig.PASSWORD);
		}
		return conn;
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#finalize()
	 * 重写父类Object类finalize()方法,在对象销毁的时候会自动调用该方法(类似于C++语言中的析构方法)
	 */
	@Override
	protected void finalize() throws Throwable {
		if (conn != null) {
			conn.close();
			conn = null;
		}
	}
}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值