Java设计模式之单例模式

Posted ontoweb-zp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java设计模式之单例模式相关的知识,希望对你有一定的参考价值。

Java设计模式之单例模式

最近由于想了解下底层的源码,所以看了些设计模式,后续看了几种写几种

单例模式英文原文:

  • Ensure a class has only one instance,and provide a global point of access to it
  • 即:在整个应用程序中,确保一个类只有一个实例,并向整个系统中提供这个实例

在Java中通常有两个表现形式

  • 饿汉式单例:类在加载时就被实例化
  • 懒汉式单例:第一次加载时才被加载实例化

1、饿汉式单例

Singleton
static Singleton m_instance = new Singleton ()
static getInstance() : Singleton

源代码:

public class Singleton{
     private Singleton() {}  
    private static final Singleton1 single = new Singleton();  
    //静态工厂方法   
    public static Singleton getInstance() {  
        return single;  
    }  
}
//成员变量是私有的,而且不能被外部访问

2、懒汉式单例

Singleton
static Singleton m_instance = null
syncchronized static getInstance() : Singleton

源代码:
java public class Singleton { private Singleton() {} private static Singleton single=null; public static Singleton getInstance() { if (singleton == null) { synchronized (Singleton.class) { if (singleton == null) { singleton = new Singleton(); } } } return singleton; } } //双重校验锁

  • 第一种虽然是比较耗费资源,但是反映速度是比较好的
  • 第二种虽然比较爽,但是比较消耗运行时的性能,但是影响很小
  • 最终说来各有千秋,第一种比较适合用户资源配置,第二种比较适合于业务逻辑上的单例模式

借助于:电子工业出版社《设计原则》感谢!


以上是关于Java设计模式之单例模式的主要内容,如果未能解决你的问题,请参考以下文章

Java设计模式——创建型模式之单例模式

Java模式设计之单例模式(二)

Java设计模式之单例模式

设计模式之单例模式(Java实现)

Java之单例模式(Singleton)

设计模式之单例模式