美文网首页
Java设计模式——单例模式

Java设计模式——单例模式

作者: MichaelLee826 | 来源:发表于2019-01-29 19:43 被阅读0次

    单例模式有三个特点:

    1. 单例类只能有一个实例
    2. 单例类必须自己创建自己的唯一实例
    3. 单例类必须给其它对象提供这一实例

    单例模式的用处:

    • 防止资源被多个请求同时调用(如打印机、通信端口等)
    • 存放配置信息,避免状态不一致

    五种实现单例模式的方法:

    1、饿汉式(先创建出实例):

    class Singleton{
        //静态实例
        private static Singleton singleton = new Singleton();
        
        //构造函数
        private Singleton(){};
        
        public Singleton getInstance(){
            return singleton;
        }
    }
    

    2、懒汉式(需要时才创建实例):

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

    3、枚举

    enum Singleton{
        INSTANCE;  //枚举成员
        
        private Singleton singleton;
        
        private Singleton{
            singleton = new Singleton();
        }
    
        public Singleton getInstance(){
            return singleton;
        }
    }
    
    //获得实例:Singleton.INSTANCE.getInstance();
    

    4、静态内部类:

    class Singleton{
        //静态内部类
        private static calss SingletonHolder{
            private static final Singleton singleton = new Singleton();
        }
        
        //构造函数
        private Singleton(){};
    
        public static final Singleton getInstance(){
            return SingletonHolder.singleton;
        }
    }
    

    5、静态代码块

    class Singleton{
        //静态变量
        private static Singleton singleton = null;
        
        //构造函数
        private Singleton(){};
    
        //静态代码块
        static{
            singleton = new Singleton();
        }
    
        public Singleton getInstance(){
            return singleton;
        }
    }
    

    欢迎关注我的微信公众号:


    “学而有益”微信公众号

    相关文章

      网友评论

          本文标题:Java设计模式——单例模式

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