单例模式:
无法通过new关键字来创建一个新的对象,构造方法为 private,提供一个创建新对象的方法
注意:
1,单例类只能有一个实例
2,单例类必须 创建属于自己的一个事例实例
3,单例类必须创建构造实例的方法
这样做的目的是保证一个类仅有一个实例
下面介绍一下单例模式的写法
1饿汉模式
public class singleton{ private static singleton instance = new singleton(); private singleton(){}; public static singleton getInstance(){ return instance; } }
饿汉模式的另一种写法
public class singleton{ private singleton instance = null; static{ instance = new sinleton(); } public static singleton getInstance(){ return this.instance; } }
2 懒汉模式
public class singleton{ private singleton instance ; private singleton(){}; public static Synchronized singleton getInstance(){ if(instance==null){ instance = new singleton(); } return instance; } }
如果不加 synchronized 方法的话,则程序在多线程时无法使用,线程不安全。
3.静态内部类(当一个类被创建的时候,其中静态类不会呗 主动呗加载,而他其中的成员变量会被加载)
-
public class singleton{ private static singletonHolder{ private static sinleton instance = new singleton(); } private singleton(){}; public static singleton getInstance(){ return sinletonHolder.instance; } }
- 枚举
public eunm singleton{ instance; public void whateverMethod(){ } }
- 5.双重校验锁
public class singleton{ private singleton instance; private singlton(){}; public static synrchronizd singleton getInstance(){ if(instance==null){ instance = new singleton(); } return instance; } }