java设计模式之单例模式

Posted yaphse-19

tags:

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

java设计模式之单例模式

一 定义:

? 单例模式保证类在整个项目中仅有一个实例,并提供一个全局访问该实例的方法。

二 单例模式的两种实现方式:懒汉模式和饿汉模式

/**
 * 懒汉模式
 */
public class Singleton
    //定义一个变量来存储实例
    private static Singleton instance = null;
    //空的构造方法
    private Singleton()
        
    
    
    //判断实例是否有存储值,若没有则new一个Singleton 并赋予它,若有则直接返回
    public static synchronized Singleton getInstance()
        if(instance == null)
            instance = new Singleton();
        
        return instance;
    
    
    //该类中可以自由添加方法或者属性,外部类可以通过获取实例来获得这个类中属性或者调用方法
    
/**
  *饿汉模式
  */
public class Singleton
    //定义一个变量来存储实例
    private static Singleton instance = new Singleton();
    //提供构造方法
    private Singleton()
    
    /**
      * 调用防范来返回已经new好的实例
      */
    public static Singleton getInstance()
        return instance;
    
    
    //该类中可以自由添加方法或者属性,外部类可以通过获取实例来获得这个类中属性或者调用方法
 


三 懒汉模式与饿汉模式的比较:

1 懒汉模式在只会在类被第一次调用时才会进行实例化操作,饿汉模式在java虚拟机装载类时就已经把类实例化完成了。

2 没有加同步锁的懒汉模式是线程不安全的,饿汉模式是线程安全的。
(这里说一下个人观点,如果单例模式使用不多的情况下,个人觉得使用饿汉模式更好,原因有:虽然在类装载时就进行实例化会占用一定的内存空间,但对于现在硬件设施不断发展,内存和CPU不断更新进步的当下,所占的资源又有多少呢?其次因为实例化在装载就已完成所以相对懒汉模式来说速度更快一点。最后饿汉模式本身就是线程安全的)

这只是个人学习过程中的随笔,有不妥之处欢迎各位看官指正。

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

JAVA设计模式之单例模式(转)

JAVA设计模式之单例模式

《JAVA与模式》之单例模式

《JAVA与模式》之单例模式

《JAVA与模式》之单例模式

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