1.单例
(1)饱汉模式(懒汉模式)–双重加锁检查DCL(Double Check Lock)----调用时才实例化对象
public class MyTestBean { private static volatile MyTestBean myTestBean; //私有方法防止外部实例化 private MyTestBean() { } public static MyTestBean getInstance() { if (myTestBean == null) { synchronized (MyTestBean.class) { if (myTestBean == null) { myTestBean = new MyTestBean(); } } } return myTestBean; } }
(2)饿汉----启动时就实例化对象
public class Singleton { //4:定义一个静态变量来存储创建好的类实例 //直接在这里创建类实例,只会创建一次 private static Singleton instance = new Singleton(); //1:私有化构造方法,好在内部控制创建实例的数目 private Singleton(){ } //2:定义一个方法来为客户端提供类实例 //3:这个方法需要定义成类方法,也就是要加static //这个方法里面就不需要控制代码了 public static Singleton getInstance(){ //5:直接使用已经创建好的实例 return instance; } }