设计模式之单例模式
定义
保证在整个软件系统中,一个类只允许有唯一的对象实例。
使用场合
- 类中只有方法没有属性
- 创建比较耗时(重量级对象)
懒汉式
public class Singleton{
//将构造方法转为私有,禁止在外部调用
private Singleton(){
}
//建立静态、私有成员变量默认值为NULL
private static Singleton singleleton = null;
public static Singleton getInstance(){
if( singleton==null){
singleleton = new Singleton()}
}
return singleton;
}
饿汉式
public class Singleton{
private Singleton(){
}
private static Singleton singleleton = null;
static{
instance = new Singleton();
}
public static Singleton getInstance(){
return instance;
}
内部类实现单例
public class Singleton{
private Singleton(){
}
//静态类随外部类的加载创建实例,只有在使用对象时,才会加载静态内部类,完成静态属性的初始化
private class SingletinInstance{
private static Singleton instance = new Singleton();
}
public static Singleton getInstance(){
return instance;
}
}
以上前两种方法都是非线程安全的,第三种方法线程安全。