美文网首页
设计模式之单例模式 Singleton

设计模式之单例模式 Singleton

作者: 音符纸飞机 | 来源:发表于2018-11-15 18:25 被阅读3次

    重点

    一个类只有一个实例
    私有构造函数
    不推荐懒汉式

    Singleton

    饿汉式

    public class SingleObject {
     
       //创建 SingleObject 的一个对象
       private static SingleObject instance = new SingleObject();
     
       //让构造函数为 private,这样该类就不会被实例化
       private SingleObject(){}
     
       //获取唯一可用的对象
       public static SingleObject getInstance(){
          return instance;
       }
    }
    

    懒汉式,线程不安全

    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;  
        }  
    }
    

    双检锁/双重校验锁

    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;  
        }  
    }
    

    登记式/静态内部类

    多线程安全的

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

    枚举

    public enum Singleton {  
        INSTANCE;  
    }
    

    相关文章

      网友评论

          本文标题:设计模式之单例模式 Singleton

          本文链接:https://www.haomeiwen.com/subject/ehodfqtx.html