美文网首页
单例模式

单例模式

作者: JupiterYang | 来源:发表于2016-06-12 15:32 被阅读17次

    作为一种常用的软件设计模式,单例模式保证了类在系统中的唯一性,唯一实例通过接口供外界访问,提供了对实例个数的控制并节约了系统资源。从数学的角度而言,若将系统中的同一类归为一个集合,则单例模式即为最多仅有一个元素的集合。通过对单例模式的简单调整,也可以实现对系统内实例数量的精确控制。

    由于单例模式需要保证类实例的唯一性,因此不能提供公共构造函数对类进行实例化操作。将构造函数私有,通过公共接口getInstance()提供对实例化类的访问,同时需要考虑到多线程场景下的线程安全性。具体代码实现如下:

    public class Singleton
    {
        private Singleton()
        {
            //default empty constructor
        }
    
        private static class SingletonFactory
        {
            private static Singleton instance = new Singleton();
        }
    
        public static Singleton getInstance()
        {
          return SingletonFactory.instance;
        }
    
        public Object readResovle()
        {
            return getInstance();
        }
    }
    

    这里的单例模式采用了静态内部类的方式实现,由于类的加载过程是线程互斥的,所以instance对象只会被创建一次,并将有效将赋值给instance的内存初始化完毕。除此之外,也可以采用synchronized关键字实现单例模式:

    public class Singleton
    {
        private static Singleton instance = null;
    
        private Singleton()
        {
            //default empty constructor
        }
    
        private static synchronized void initInstance()
        {
            if(null == instance)
            {
                instance = new Singleton();
            }
        }
    
        public static Singleton getInstance()
        {
            if(null == instance)
            {
                initInstance();
            }
    
            return instance;
        }
    
        public Object readResovle()
        {
            return getInstance();
        }
    
    }
    

    相关文章

      网友评论

          本文标题:单例模式

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