单例模式,顾名思义就是一个类只有一个的实例。
这种模式的应用场景也是比较多的,比如数据库的连接对象,window的任务管理器等。
数据库连接单例模式
众所周知,数据库连接资源非常宝贵,为了性能数据库连接对象当然是物以稀为贵啦。
单例模式的特点就是一个对象,那么如何实现?
下面的一个类就是一个简单而又经典的数据库连接单例模式代码啦。
public class DatabaseConnection {
private static DatabaseConnection dbConn;
private DatabaseConnection(){};
private static DatabaseConnection getDbConn(){
if(dbConn == null){
dbConn = new DatabaseConnection();
}
return dbConn;
}
}
private static DatabaseConnection getDbConn()
如果想使用这个对象,只能用这个方法了。
多线程问题
当多线程使用到了单例模式,怎么办?
1.给获取对象的方法名加上synchronized
关键字。
private synchronized static DatabaseConnection getDbConn(){}
2.给对象直接赋值。
private static DatabaseConnection dbConn = new DatabaseConnection();