05-单例模式的概念和类型

单例模式的概念

  • 在程序运行时,同一个类只有一个实例

单例模式的类型

饿汉式

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

懒汉式

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

懒汉加锁

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

懒汉双检锁

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

静态内部类实现单例

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

主要记住饿汉式和懒汉式即可

posted @ 2022-08-06 14:29  OnlyOnYourself-Lzw  阅读(20)  评论(0编辑  收藏  举报