Java学习之单例模式

Posted 一杯水M

tags:

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

单例设计模式:解决一个类在内存中只存在一个对象
思想:
1.为了避免过多创建类的对象,禁止此类以外创建对象(构造方法私有化)
2.为了类可以被使用就必须创建此类对象,只好在本类中,创建对象
3.在此类中创建的对象,怎么给此类以外的使用,所已此类必须提供返回对象的一个方法
代码体现:
1.将构造函数私有化
2.在类中创建对象
3.提供一个方法用于获取此类对象
class Single
{
    /**
    方式一、饿汉式
    开发建议使用
    */
    //1.将构造函数私有化
    private Single(){}
    //2.在类中创建对象
    private static Single s=new Single();
    //3.提供一个方法用于获取此类对象
    public static Single getInstance()
    {
        return s;
    }
    /**
    方式二、懒汉式
    */
    private Single(){}
    private static Single s=null;
    //线程不安全
    public static Single getInstance()
    {
        if(s==null)
            s=new Single();
        return s;
    }
    //加同步(效率低)
    public static synchronized Single getInstance()
    {
        if(s==null)
            s=new Single();
        return s;
    }
    //双重判断
    public static Single getInstance()
    {
        if(s==null)
        {
            synchronized(Single.class)
            {
                if(s==null)
                    s=new Single();
            }
        }
        return s;
    }
    
    private int num;
    public int getNum()
    {
        return num;
    }
    public void setNum(int num)
    {
        this.num=num;
    }
}

class SingleDemo
{
    public static void main (String[] args)
    {
        Single s1=Single.getInstance();
        Single s2=Single.getInstance();
        s1.setNum(23);
        System.out.println(s2.getNum());
    }
}

 

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

Java学习之动态代理

设计模式学习之单例模式

spring源码学习之设计模式单例模式

23种设计模式学习之单例模式

iOS学习之单例模式

JavaWeb学习之设计模式