模式定义:
单件模式主要作用是保证在java应用程序中,一个类只有一个实例存在。在很多操作中,比如建立目录、数据库连接都需要这样的单线程操作。
单件实例可以状态化,用于保存状态。多个状态化的单件实例可以座位状态仓库对外提供服务。
另外,单件实例也可以无状态化,用于充当工具类。
单件一般有两种形式:
第一种
public class Singleton {
//私有构造方法
private Singleton() {}
//私有静态变量
private static Singleton mInstance = new Singleton();
//静态方法
public static Singleton getInSingleton() {
return mInstance;
}
}
第二种
public class Singleton {
//私有构造方法
private Singleton() {}
//私有静态变量,null
private static Singleton mInstance = null;
//静态方法
public static synchronized Singleton getInSingleton() {
//只有第一次使用时生成实例,提高了效率
if (mInstance == null) {
mInstance = new Singleton();
} return mInstance;
}
}
第二种的synchronized很关键,不加同步锁的话可能会产生多个实例。