单例模式实现

1、饿汉式

public class Singleton {  
     private static Singleton instance = new Singleton();  
     private Singleton (){}
     public static Singleton getInstance() {  
       return instance;  
     }  
 }

2、懒汉式

public class Singleton {  
      private static Singleton instance;  
      private Singleton (){}   
      public static Singleton getInstance() {  
        if (instance == null) {  
            instance = new Singleton();  
        }  
        return instance;  
      }  
 }

public class Singleton {  
   private static Singleton instance;  
   private Singleton (){}  
   public static synchronized Singleton getInstance() {  
     if (instance == null) {  
         instance = new Singleton();  
     }  
     return instance;  
   }  
}

3、静态内部类

public class Singleton {  
   private static class SingletonHolder {  
     private static final Singleton INSTANCE = new Singleton();  
   }  
   private Singleton (){}  
   public static final Singleton getInstance() {  
     return SingletonHolder.INSTANCE;  
   }  
}

4、枚举

public enum Singleton {  
   INSTANCE;  
   public void whateverMethod() {}  
}

5、双重校验锁

public class Singleton {  
   private volatile static Singleton singleton;  
   private Singleton (){}  
   public static Singleton getSingleton() {  
     if (singleton == null) {  
         synchronized (Singleton.class) {  
           if (singleton == null) {  
               singleton = new Singleton();  
           }  
         }  
     }  
     return singleton;  
   }  
}

 

posted @ 2020-07-24 14:42  那只猪贼肥  阅读(64)  评论(0编辑  收藏  举报