单例模式

一、 单例模式是我们在开发中经常要用到的一个非常简单的设计模式。单例模式有以下特征:

  1. 构造方法不对外开放,可以是private属性,防止其他人在不知情的情况下用new去创建实例;
  2. 通过一个静态方法或者是一个枚举返回单例类的对象;
  3. 注意多线程的应用场景;
  4. 注意单例类对象在序列化的时候不会重新创建对象。

二、单例模式的创建方法
单例模式的创建有两种方法,一种是饿汉模式,一种是懒汉模式。话不多少,直接上代码:

  1. 饿汉模式
class Single {
    private Single(){} 
    private static Single single= new Single(); 

    public static Single getInstance(){
        return single; 
    }
}
  1. 懒汉模式(双重校验)
class Single { 
    private Single(){} 
    private static Single single= null;

    public static Single getInstance(){
       if ( single == null ) { 
          synchronized (Single.class) { 
              if ( single == null ) {
                  single = new Single();
               }
            } 
        }
        return single; 
    }
}

为了保证线程安全,以及JVM不会出错(JVM编译器的指令重排问题),更小心一些可以将single加上修饰词volatile。
另外还有一些其他方式实现的单例模式,这里就不做过多介绍了,用的更多的是懒汉模式(双重校验)这种模式。

你可能感兴趣的:(单例模式)