设计模式之单例模式(Singleton)

单例模式即是唯一实例的意思,即一个类只有唯一的一个实例。

单例模式是所有设计模式中最简单的模式,有两种方式可以实现:

1.饿汉式单例模式

public class Singleton
{
    //定义一个该类的静态变量
   private static Singleton instance = new Singleton();
    
    //定义私有构造函数,确保外部不可以new一个实例
    private Singleton()
    {
        //initialization code
    }

    //定义一个静态方法,外部用此获得该类的唯一实例
    public static Singleton getInstance()
    {
        return instance;
    }
}

2.懒汉式单例模式

public class Singleton
{
    //定义一个该类的静态变量,但初始化为null
    private static Singleton instance = null;

    //私有构造函数
    private Singleton()
    {
        //initialization code
    }

    //获得唯一实例的静态方法
    public static Singleton getInstance()
    {
     if(instance == null)
     {
      instance = new Singleton();
     }
return instance; } }

注意:第二种实现方式存在同步问题,可以利用双检测锁机制解决,也可以直接用方式一。

以下为双检测锁机制的懒汉式单例模式:

public class Singleton
{
    //定义一个该类的静态变量,但初始化为null
    private static Singleton instance = null;

    //私有构造函数
    private Singleton()
    {
        //initialization code
    }

    //获得唯一实例的静态方法
    public static Singleton getInstance()
    {
     if(instance == null)//第一次检测
        {   
            synchronized(Singleton.class)//增加同步机制
            { 
                if(instance == null)//第二次检测
                {  
                    instance = new Singleton();
                }
            }     
         }
         return instance;
    }
}

 使用方式:

Singleton instance=Singleton.getInstance();

 

 

 

 

 

posted on 2013-10-30 18:17  Anonymous_  阅读(164)  评论(0)    收藏  举报

导航