单例模式:单例的目的是保证某个类只有一个实例,当某些类创建太消耗内存时,可以考虑使用单例模式,单例模式分为 饿汉式 和 懒汉式
1:饿汉式
public class ConnectUtil {
private ConnectUtil(){};
public static ConnectUtil connectUtil = new ConnectUtil();
public static ConnectUtil getInstance(){
return connectUtil;
}
}
步骤1:首先将无参构造私有化
步骤2:new 一个对象
步骤3:给一个获取该对象的入口
这种创建方式非常简单,而且是线程安全的(只在类加载时才会初始化,以后都不会),但是有一个缺点就是,不管你需要不需要都会创建这么个对象,会消耗一定的内存。
2:懒汉式
该模式只在你需要对象时才会生成单例对象(比如调用getInstance方法)
第一种实现方式:
public class ConnectUtil1 {
private ConnectUtil1(){};
public static ConnectUtil1 connectUtil;
//懒汉式
public static ConnectUtil1 getInstance(){
if (connectUtil == null) {
connectUtil = new ConnectUtil1();
}
return connectUtil;
}
}
上面这种方式是线程不安全的,为了实现线程安全,可以使用synchronized 加锁的方式实现
第二种实现方式:
public class ConnectUtil1 {
private ConnectUtil1(){};
public static ConnectUtil1 connectUtil;
public static ConnectUtil1 getInstance(){
if (connectUtil == null) {
synchronized (ConnectUtil1.class) {
if (connectUtil == null) {
connectUtil = new ConnectUtil1();
}
}
}
return connectUtil;
}
}