SingleTon单例模式总结篇

在Java设计模式中,单例模式相对来说算是比较简单的一种构建模式。适用的场景在于:对于定义的一个类,在整个应用程序执行期间只有唯一的一个实例对象。

一,懒汉式:

其特点是延迟加载,即当需要用到此单一实例的时候,才去初始化此单一实例。

 public class SingleTon {

     // 静态实例变量
private static SingleTon instance; // 私有化构造函数
private SingleTon() { } // 静态public方法,向整个应用提供单例获取方式
public static SingleTon getInstance() {
if (instance == null) {
instance = new SingleTon();
}
return instance;
} }

懒汉式线程安全

 public class SingleTon {

     // 静态实例变量加上volatile
private static volatile SingleTon instance; // 私有化构造函数
private SingleTon() { } // 双重检查锁
public static SingleTon getInstance() {
if (instance == null) {
synchronized(Singleton.class){
if(singleton == null){
instance = new SingleTon();
}
}
}
return instance;
} }

二,饿汉式:

饿汉式的特点是应用中尚未需要用到此单一实例的时候即先实例化。

 public class SingleTon {

     // 静态实例变量,直接初始化
private static SingleTon instance = new SingleTon(); // 私有化构造函数
private SingleTon() { } // 静态public方法,向整个应用提供单例获取方式
public static SingleTon getInstance() {
return instance;
} }

静态内部类单例模式

 public class SingleTon {

     // 利用静态内部类特性实现外部类的单例
private static class SingleTonken{
private static SingleTon singleTon = new SingleTon();
} // 私有化构造函数
private SingleTon() { } public static SingleTon getInstance() {
return SingleTonken.singleTon;
} }

静态代码块单例模式

 public class SingleToken {
private static SingleToken singleTon;
//私有化构造函数
private SingleToken(){}
//静态代码块
static{
singleTon = new SingleToken();
}
//获取实例化构造函数
public static SingleToken getInstatce(){
return singleTon;
} }

枚举单例模式

 public enum EnumSingleTon {
INSTANCE;
public static EnumSingleTon getInstance(){
return INSTANCE;
}
}
上一篇:ios The App Life Cycle


下一篇:js——常见的小方法