单例模式_代码example_饿汉\静态内部类\双重检查\枚举

  1. 饿汉式
public class Singleton{ 
    //类加载时就初始化 
    private static final Singleton INSTANCE = new Singleton(); 
    //构造方法必须私有 
    private Singleton(){} 
        //提供获取对象的方法 
    public static Singleton getInstance(){ 
        return INSTANCE; 
    } 
}
  1. 静态内部类
public class Singleton { 
    //私有静态内部类 
    private static class SingletonHolder {   
        private static final Singleton INSTANCE = new Singleton();   
    } 
    //私有构造 
    private Singleton (){} 
    //获取对象的方法 
    public static final Singleton getInstance() {   
        return SingletonHolder.INSTANCE;  
    }   
}
  1. 双重检查
public class Singleton {   
      private volatile static Singleton instance;   
      private Singleton (){ 
      }    
      public static Singleton getInstance() {   
      if (instance== null) {   
          synchronized (Singleton.class) {   
          if (instance== null) {   
              instance= new Singleton();   
          }   
         }   
     }   
     return singleton;   
     }   
 }
  1. 枚举
public enum Singleton {   
     INSTANCE;   
     public void doSomeThing() {   
     }   
 }
posted @ 2020-11-04 10:28  卡文地洗  阅读(98)  评论(0)    收藏  举报