美文网首页
单例模式

单例模式

作者: A_Coder | 来源:发表于2016-10-24 08:57 被阅读0次

           单例模式的作用是保证整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个(也可以不存在)。
           单例模式确保某一个类只有一个实例,而且自行实例化,并向整个系统提供这个实例单例模式只应在有真正的‘单一实例’需求时才可使用。
    全局变量和单例模式的区别为:

    • 全局变量是对一个对象的静态引用,全局变量确实可以提供单例模式实现的全局访问这个功能,但是它并不能保证应用程序中只有一个实例;
    • 编码规范也明确指出应该要少用全局变量,因为过多使用全局变量,会造成代码难度;
    • 全局变量并不能实现继承(虽然单例模式在继承上也能很好地处理,但是还可以实现继承的)。而单例模式在类中保存了它的唯一实例,这个类它可以保证只能创建一个实例,同时它还提供了一个访问该唯一实例的全局访问点。

    单例类的构造函数必须为私有的,同时单例类必须提供一个全局访问点。
    静态内部类单例模式:

    public class Singleton{
        private Singleton(){}
        public static Singleton getInstance(){
            return SingletonHolder.instance;
        }
        /*静态内部类*/
        private static class SingletonHolder{
            private static final Singleton instance = new Singleton();
        }
    }
    

           当第一次加载Singleton类时并不会初始化instance,只有在第一次调用Singleton的getInstance方法时才会导致instance被初始化,因此第一次调用getInstance方法会导致 虚拟机加载SingletonHolder类,这种方式不仅能够确保线程安全,也能够保证单例对象的唯一性,同时也延迟了单例的实例化,所以这是推荐使用的单例模式实现方式。

    相关文章

      网友评论

          本文标题:单例模式

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