设计模式之单例模式(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) 收藏 举报
浙公网安备 33010602011771号