成都网站建设设计

将想法与焦点和您一起共享

深入浅析Java设计模式中的单例模式-创新互联

创新互联www.cdcxhl.cn八线动态BGP香港云服务器提供商,新人活动买多久送多久,划算不套路!

创新互联网站建设由有经验的网站设计师、开发人员和项目经理组成的专业建站团队,负责网站视觉设计、用户体验优化、交互设计和前端开发等方面的工作,以确保网站外观精美、成都网站建设、成都做网站易于使用并且具有良好的响应性。

这篇文章给大家介绍深入浅析Java设计模式中的单例模式,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

单例模式是非常常见的设计模式,其含义也很简单,一个类给外部提供一个唯一的实例。下文所有的代码均在github

源码整个项目不仅仅有设计模式,还有其他JavaSE知识点,欢迎Star,Fork

单例模式的UML图

深入浅析Java设计模式中的单例模式

单例模式的关键点

通过上面的UML图,我们可以看出单例模式的特点如下:

1、构造器是私有的,不允许外部的类调用构造器
2、提供一个供外部访问的方法,该方法返回单例类的实例

如何实现单例模式

上面已经给出了单例模式的关键点,我们的实现只需要满足上面2点即可。但是正因为单例模式的实现方式比较宽松,所以不同的实现方式会有不同的问题。我们可以对单例模式的实现做一下分类,看一看有哪些不同的实现方式。

1根据单例对象的创建时机不同,可以分为饿汉模式和懒汉模式。饿汉是指在类加载的时候,就创建了对象。但是创建对象有时比较消耗资源,会造成类加载很慢,但是优点是获取对象的速度很快,因为早已经创建好了嘛。懒汉就是相对饿汉而言,在需要返回单例对象的时候,在创建对象,类加载的时候,并不初始化,好处与缺点也不言而喻

2.根据是否实现线程安全,可以分为普通的懒汉模式这种线程不安全的写法,和饿汉模式,双重检查锁的懒汉模式,以及通过静态内部类或者枚举类等实现的线程安全的写法。

一个线程不安全的单例模式

public class SimpleSingleton {

  private static SimpleSingleton simpleSingleton;

  private SimpleSingleton(){

  }

  public static SimpleSingleton getInstance(){
    if (simpleSingleton == null) {
      simpleSingleton = new SimpleSingleton();
    }
    return simpleSingleton;
  }
}

分享文章:深入浅析Java设计模式中的单例模式-创新互联
文章链接:http://chengdu.cdxwcx.cn/article/ioiie.html